| Autor |
Beitrag |
Jeremy
      
Beiträge: 99
Fedora Core 1
K3 Ent
|
Verfasst: Fr 10.10.03 18:29
Obwohl ich in eine Datei Schreiben will mit folgende code:
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]); 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
      
Beiträge: 358
Win XP Pro, Win 7 Beta
BDS 2006
|
Verfasst: 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 
      
Beiträge: 99
Fedora Core 1
K3 Ent
|
Verfasst: 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
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: Fr 10.10.03 19:59
Hallo,
| Jeremy hat folgendes geschrieben: | 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:
Delphi-Quelltext 1:
| IF (Application.MessageBox('Datei existiert, soll es überschrieben werden??', 'Achtung!', mb_YesNo) = idYes) THEN ... |
| Jeremy hat folgendes geschrieben: | Delphi-Quelltext |
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:
Delphi-Quelltext
öffnen.
So ich hoffe der Übeltäter war dabei. Ansonsten einfach weiter fragen  .
Gruß
Klabautermann
|
|
obbschtkuche
Gast
Erhaltene Danke: 1
|
Verfasst: Fr 10.10.03 20:15
so ists richtig:
Delphi-Quelltext 1:
| WriteLn(f, Form1.Memo1.Lines[I]); |
Es wird versucht die cmd-fkt aufzurufen, was bei einer nicht-konselenanwendung natürlich nicht geht.
|
|
MSCH
      
Beiträge: 1448
Erhaltene Danke: 3
W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
|
Verfasst: 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
|
Verfasst: Fr 10.10.03 20:25
assignfile steht in der ersten zeile und reset da:
Delphi-Quelltext 1: 2: 3:
| Reset(F, 1); for I:= 0 to Form1.Memo1.Lines.Count -1 do WriteLn(Form1.Memo1.Lines[I]); |
das problem ist aber einfach nur, dass ein "F," als erster parameter von WriteLn fehlt.
|
|
Jeremy 
      
Beiträge: 99
Fedora Core 1
K3 Ent
|
Verfasst: 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 
      
Beiträge: 99
Fedora Core 1
K3 Ent
|
Verfasst: 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}
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 public published 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}
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 public 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!!!
|
|
|