Autor Beitrag
Jeremy
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 99

Fedora Core 1
K3 Ent
BeitragVerfasst: Fr 10.10.03 18:29 
Obwohl ich in eine Datei Schreiben will mit folgende code:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
AssignFile(F, Form1.SaveDialog1.FileName);
     if FileExists(Form1.SaveDialog1.FileName) then
      begin
       Application.MessageBox('Datei existiert, soll es überschrieben werden??''Achtung!', mb_YesNo);
        if IdYes = 5 then
         begin
            Form1.Cipher.Create(Self);
            Form1.Cipher.InitStr(Key, TDCP_sha512);
              for I := 0 to Form1.Memo1.Lines.Count -1 do
               Form1.Cipher.EncryptString(Form1.Memo1.Lines[I]);
              end;
            Form1.Cipher.Burn;
            Form1.Cipher.Free;
          end;
          Reset(F, 1);
          for I:= 0 to Form1.Memo1.Lines.Count -1 do
           WriteLn(Form1.Memo1.Lines[I]); {Hier ist der übeltäter}
          end;
         CloseFile(F);

Der I/O Error 105 (Datei nicht geöffnet für lesezugriff)

Was ist falsch an mein code bitte???

Jeremy

_________________
Jede ende hat ne anfang genau wie umgekehrt und windows ist der teurste mull den man kaufen kann!!!
Renegade
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 358

Win XP Pro, Win 7 Beta
BDS 2006
BeitragVerfasst: Fr 10.10.03 18:36 
Moin erstmal!

Fehlt da nicht nocht

Reset(f)?

Gruß Renegade

_________________
Sokrates (468 v.Chr. - 399 v.Chr.)
"Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen."
Jeremy Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 99

Fedora Core 1
K3 Ent
BeitragVerfasst: Fr 10.10.03 19:03 
Nö der ist drin wo müsste es sonst noch????

_________________
Jede ende hat ne anfang genau wie umgekehrt und windows ist der teurste mull den man kaufen kann!!!
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Fr 10.10.03 19:59 
Hallo,
Jeremy hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
2:
       Application.MessageBox('Datei existiert, soll es überschrieben werden??''Achtung!', mb_YesNo);
        if IdYes = 5 then

das ist schon mal Falsch. Die Abfrage ob idYes=5 ist, ist blödsinn. Wenn du auf die MessageBox Reagieren möchtest mu8ss das so aussehen:
ausblenden Delphi-Quelltext
1:
 IF (Application.MessageBox('Datei existiert, soll es überschrieben werden??''Achtung!', mb_YesNo) = idYes) THEN ...					


Jeremy hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
          Reset(F, 1);					

Warum gibst du hier eine Blockgröße an? Ist f vom Typ Textfile? Dass muss es sein, damit ReadLn und WriteLn funktionieren. Dann kannst du es mit einem einfachen:
ausblenden Delphi-Quelltext
1:
 Reset(f);					

öffnen.

So ich hoffe der Übeltäter war dabei. Ansonsten einfach weiter fragen ;).

Gruß
Klabautermann
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Fr 10.10.03 20:15 
so ists richtig:

ausblenden Delphi-Quelltext
1:
WriteLn(f, Form1.Memo1.Lines[I]); {Hier ist der übeltäter}					


Es wird versucht die cmd-fkt aufzurufen, was bei einer nicht-konselenanwendung natürlich nicht geht.
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Fr 10.10.03 20:21 
bin ich blind?
ich find den Code nicht, mit AssignFile(F,<Dateiname>). Also wenn ich nicht blind bin, dann fehlt er und Reset(F) geht ins blaue. In dem Falle IoError.

grez
msch

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Fr 10.10.03 20:25 
assignfile steht in der ersten zeile und reset da:

ausblenden Delphi-Quelltext
1:
2:
3:
          Reset(F, 1); 
          for I:= 0 to Form1.Memo1.Lines.Count -1 do 
           WriteLn(Form1.Memo1.Lines[I]); {Hier ist der übeltäter}


das problem ist aber einfach nur, dass ein "F," als erster parameter von WriteLn fehlt.
Jeremy Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 99

Fedora Core 1
K3 Ent
BeitragVerfasst: Fr 10.10.03 21:17 
Hi Leut,
Danke an alle für's feedback. Noch nochmalige betrachtung meine Code fiel mir auf das das ganze recht chaotisch ist. Ich werd noch mal alles über arbeiten. Wenn ich mal fertig bin mit der überarbeitung (hoffentlich morgen :? ) post ich das ganze so das andere anfänger (wie ich) auch mal davon lernen können!!!

Danke nochmal!!

Jeremy

_________________
Jede ende hat ne anfang genau wie umgekehrt und windows ist der teurste mull den man kaufen kann!!!
Jeremy Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 99

Fedora Core 1
K3 Ent
BeitragVerfasst: Sa 11.10.03 14:49 
Titel: Endlich geht's
ok der code ist nun überarbeitet, für die jenigen den es interessiert hier ist es
{unit 1}
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
unit UnitMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, StdCtrls, DCPcrypt2, DCPsha512, DCPblockciphers,
  DCPcast256;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    Datei1: TMenuItem;
    VerschlsseltSpeichern1: TMenuItem;
    VerschlsseltSpeichern2: TMenuItem;
    AlsTextSpeichern1: TMenuItem;
    Beenden1: TMenuItem;
    Memo1: TMemo;
    Cipher: TDCP_cast256;
    Hash: TDCP_sha512;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    procedure FormCreate(Sender: TObject);
    procedure VerschlsseltSpeichern2Click(Sender: TObject);
    procedure SaveSecure(Sender: TObject);
  private
    { Private declarations }
  public
  published
    { Public declarations }
  end;

var
  Form1: TForm1;
  Key, Pressed, ToWrite: String;
  F: TextFile;
implementation

uses UnitPass;

{$R *.dfm}


procedure TForm1.FormCreate(Sender: TObject);
begin
Pressed := 'Abrechen';
end;

procedure TForm1.VerschlsseltSpeichern2Click(Sender: TObject);
begin
Form2.Show;
end;
procedure TForm1.SaveSecure(Sender: TObject);
var I: Integer;
begin
 If FileExists(SaveDialog1.FileName) then
  Begin
  if (Application.MessageBox('Datei existiert, soll es überschrieben werden??''Achtung!', mb_YesNo) = idYes) then
   begin
    AssignFile(F, SaveDialog1.FileName);
    Rewrite(F);
    Cipher.InitStr(Key, TDCP_SHA512);
      For I:=0 to Memo1.Lines.Count -1 do
       begin
        ToWrite := Cipher.EncryptString(Memo1.Lines[i]);
        WriteLn(F, ToWrite);
       end;
      Cipher.Burn;
      Cipher.Free;
      CloseFile(F);
   end;
  end
   else
    begin
     AssignFile(F, SaveDialog1.FileName);
     ReWrite(F);
     Cipher.InitStr(Key, TDCP_SHA512);
      For I:=0 to Memo1.Lines.Count - 1 do
       Begin
        ToWrite := Cipher.EncryptString(Memo1.Lines[I]);
        WriteLn(F, ToWrite);
       end;
      Cipher.Burn;
      Cipher.Free;
      CloseFile(F);
     end;
 end;

end.

{unit 2}
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
unit UnitPass;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Mask, DCPsha512;

type
  TForm2 = class(TForm)
    KeyText: TStaticText;
    BtnOk: TButton;
    BtnAbrechen: TButton;
    KeyEdit: TMaskEdit;
    procedure BtnOkClick(Sender: TObject);
    procedure BtnAbrechenClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;
  F: File;
implementation

uses UnitMain;
{$R *.dfm}

procedure TForm2.BtnOkClick(Sender: TObject);
var
Key: String;
begin
Pressed := 'Ok';
If Pressed = 'Ok' then
 begin
     If KeyEdit.Text = '' then
      begin
       ShowMessage('Schlüssel muß mindestens 8 zeichen lang sein!');
      end
     else
      begin
       Key := KeyEdit.Text;
       Form2.Close;
      end;
 end;
end;
procedure TForm2.BtnAbrechenClick(Sender: TObject);
begin
Pressed := 'Abrechen';
KeyEdit.Clear;
end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form1.SaveDialog1.DefaultExt := 'sec';
Form1.SaveDialog1.FileName := 'Unbenannt';
Form1.SaveDialog1.Filter := 'sec';
Form1.SaveDialog1.Execute;
Form1.SaveSecure(Sender);
end;



end.


Es war doch nicht so schwer wie ich versucht habe alles zu machen. Danke nochmal an alle für die feedback! Hab von euch einiges gelernt!!

Danke nochmal
Jeremy

_________________
Jede ende hat ne anfang genau wie umgekehrt und windows ist der teurste mull den man kaufen kann!!!