Autor |
Beitrag |
AlffromMelmac
      
Beiträge: 24
|
Verfasst: Di 03.01.06 13:29
Hallo,
ich bin Delphi Anfänger und ich häng gerade an einem Problem;
Ich möchte mit dem Savedialog div. Edits in bestimmte Zeilen einer txt-File speichern;
(--> Habs über Actionlist und über Savedialog probiert);
Kann das Prog auch starten, betätige den entsprechenden Button und das Prog zeigt das Fenster an wohin ich die Datei haben will und wie sie heißen soll (Standard-Fenster halt); Alledings wenn ich speichern will, dann meldet er nach der Speicherung Listenindex überschreitet Maximum (1); Sieht jdm. meinen Fehler? Ich wollte schauen dass es ohne die add-Methode (z.B. add. edit1)b geht; Kann mir jdm. weiterhelfen?
Vielen Dank im Voraus,
P.S.: Noch der Quellcode der entsprechenden Stelle
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TForm2.SaveExecute(Sender: TObject); var sl: TStrings; zeile1, zeile2, zeile3 : string;
begin if savedialog1.Execute then begin if Savedialog1.FileName <> '' then begin sl:= TStringList.Create; zeile1:= sl [1]; zeile2:= sl [2]; zeile3:= sl [3]; sl.Free; edit1.Text:= zeile1; edit2.Text:= zeile2; edit3.Text:= zeile3; sl.savetoFile (SaveDialog1.Filename) ; end; end; end; |
zum Vergleich:
mit opendialog funktionierts;
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:
| procedure TForm2.OeffnenExecute(Sender: TObject); var s: TStrings; zeile1, zeile2, zeile3 : string;
begin If Opendialog1.Execute then begin if Fileexists (Opendialog1.FileName) then begin
s:= TStringList.Create; s.LoadFromFile (OpenDialog1.Filename) ; zeile1:= s [1]; zeile2:= s [2]; zeile3:= s [3]; s.Free; edit1.Text:= zeile1; edit2.Text:= zeile2; edit3.Text:= zeile3; end; end; end; |
Moderiert von Gausi: Beitragsformatierung überarbeitet.
|
|
matze.de
      
Beiträge: 576
Win95, Win98 SE, WinXp Prof SP2
D7P, D8P, FPC2.0
|
Verfasst: Di 03.01.06 13:35
Man könnte es so machen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| Procedure TForm1.Save(AFileName: String); Var IO: TextFile; Begin AssignFile(IO, AFileName); ReWrite(IO); Try WriteLn(IO, 'Hallo'); WriteLn(IO); WriteLn(IO, 'Die ist ein Text in einer Textdatei.'); Finally CloseFile(IO); End; End; |
Hoffe ich hab keine Fehler.
mfg matze
_________________ si tacuisses, philosophus mansisses.
Zuletzt bearbeitet von matze.de am Di 03.01.06 13:40, insgesamt 2-mal bearbeitet
|
|
Martin1966
      
Beiträge: 1068
Win 2000, Win XP
Delphi 7, Delphi 2005
|
Verfasst: Di 03.01.06 13:37
Hallo!  Willkommen im Delphi-Forum!
Hast du mal genau geschaut was die Funktion SaveExecute macht? Die hast du wohl von der Load Procedure kopiert.
Ich markiere mal die Stellen die falsch sind:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure TForm2.SaveExecute(Sender: TObject); var sl: TStrings; zeile1, zeile2, zeile3 : string; begin if savedialog1.Execute then begin if Savedialog1.FileName <> '' then begin sl:= TStringList.Create; zeile1:= sl [1]; zeile2:= sl [2]; zeile3:= sl [3]; sl.Free; edit1.Text:= zeile1; edit2.Text:= zeile2; edit3.Text:= zeile3; sl.savetoFile (SaveDialog1.Filename) ; end; end; end; |
Weist du was du falsch gemacht hast?
Lg Martin
_________________ Ein Nutzer der Ecke
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Di 03.01.06 13:39
Hallo und  in der Entwickler-Ecke!
Du musst beim Speichern die Reihenfolge umdrehen:
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:
| procedure TForm2.SaveExecute(Sender: TObject); var sl: TStrings; zeile1, zeile2, zeile3 : string;
begin if savedialog1.Execute then begin if Savedialog1.FileName <> '' then begin zeile1 := edit1.Text;
sl := TStringList.Create; sl[1] := zeile1;
sl.savetoFile (SaveDialog1.Filename) ;
sl.Free; end; end; end; |
_________________ We are, we were and will not be.
|
|
Martin1966
      
Beiträge: 1068
Win 2000, Win XP
Delphi 7, Delphi 2005
|
Verfasst: Di 03.01.06 13:49
_________________ Ein Nutzer der Ecke
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Di 03.01.06 14:02
Hmm. Da könntest du Recht haben. Da war ich mit meiner Fehlerkorrektur wohl etwas voreilig.
_________________ We are, we were and will not be.
|
|
Martin1966
      
Beiträge: 1068
Win 2000, Win XP
Delphi 7, Delphi 2005
|
Verfasst: Di 03.01.06 14:34
Macht ja nichts.
Deine Hauptaussage: "Du musst beim Speichern die Reihenfolge umdrehen" war ja entscheidend um das Problem zu lösen.
Lg Martin
_________________ Ein Nutzer der Ecke
|
|
AlffromMelmac 
      
Beiträge: 24
|
Verfasst: Di 03.01.06 14:46
Danke euch, für die schnelle Antwort;
Aber wird bei sl.Add(Zeile1) nicht nur der Inhalt von Edit1,2,3, usw. untereinander je in eine Zeile geschrieben also angehängt?
Gäbe es hier eine Möglichkeit dass z.B. edit15 klar definiert ist als Zeile 15 im Textdokument? So ähnlich wie der opendialog Vorgang (s.o.);
Grüße
|
|
Martin1966
      
Beiträge: 1068
Win 2000, Win XP
Delphi 7, Delphi 2005
|
Verfasst: Di 03.01.06 15:13
AlffromMelmac hat folgendes geschrieben: | Aber wird bei sl.Add(Zeile1) nicht nur der Inhalt von Edit1,2,3, usw. untereinander je in eine Zeile geschrieben also angehängt? |
Ja.
AlffromMelmac hat folgendes geschrieben: | Gäbe es hier eine Möglichkeit dass z.B. edit15 klar definiert ist als Zeile 15 im Textdokument? |
Genauso ist es auch. Wenn Du folgendes schreibst:
Delphi-Quelltext 1: 2: 3: 4: 5:
| SL.Add (Edit1.Text); SL.Add (Edit2.Text); SL.Add (Edit3.Text); SL.Add (Edit4.Text); SL.Add (Edit5.Text); |
Dann sieht die Datei die du anschl. erstellst so aus:
Quelltext 1: 2: 3: 4: 5:
| Zeile1 Zeile2
Zeile4 Zeile5 |
Wie du siehst, ist trotz des leeren Edit3 Feldes in Zeile 4 und 5 der richtige Eintrag aus den Edit-Felder 4 und 5.
Lg Martin
_________________ Ein Nutzer der Ecke
|
|
AlffromMelmac 
      
Beiträge: 24
|
Verfasst: Di 03.01.06 15:26
Ok, super; Danke dir; "Programmier" grad mal 2 Wochen oderso, drum hab brauch ich manchmal länger
Also danke,
Grüße,
|
|