Roadrunner116 - Di 09.01.07 16:56
Titel: TStringlist
Hi ich möchte eine Stringlist mit Inhalten aus edits und einem memo füllen, diese speichern und auch wieder aufrufen!!!
Delphi-Quelltext
1: 2: 3: 4:
| datalist:= TStringList.Create(); datalist.Add(Edit1.Text); datalist.Add(Edit1.Text); datalist.Assign(Memo1.Lines); |
Es wird nur der Inhalt des Memos gespeichert...... wo knnte der fehler liegen?
Moderiert von
Gausi: Quote- durch Delphi-Tags ersetzt
Narses - Di 09.01.07 17:46
Moin!
Ich möchte hier nochmal etwas Aufklärung dransetzen. Die beiden möglichen Lösungen waren im Überblick:
Delphi-Quelltext
1: 2: 3:
| datalist.Add(Memo1.Text); datalist.AddStrings(Memo1.Lines); |
Dabei sind die Ansätze aber
nicht gleichwertig :shock:, sondern haben unterschiedliche Funktion:
Mit
.Add(.Text) fügst du den Inhalt des Memos als einzelnen String an die Liste an, während
.AddStrings(.Lines) die einzelnen Zeilen des Memos an die Stringliste als einzelne Strings anfügt! :idea:
Aber in deinem Fall scheint mir
keine der beiden Lösungen gut zu sein, denn beim Speichern per
.SaveToFile() und später mit
.LoadFromFile() geht dieser Unterschied nämlich wieder verloren, da durch die enthaltenen Zeilenwechsel in
Memo1.Text wieder einzelne Strings aus der Datei gelesen werden. :!: ;)
Deshalb würde ich das beim Speichern so machen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| var datalist: TStringList; begin datalist := TStringList.Create; try datalist.Add(Edit1.Text); datalist.Add(Edit1.Text); datalist.Add(Memo1.Lines.CommaText); datalist.SaveToFile('C:\Datei.txt'); finally datalist.Free; end; |
Und später beim Laden:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| var datalist: TStringList; begin datalist := TStringList.Create; try datalist.LoadFromFile('C:\Datei.txt'); if (datalist.Count >= 3) then begin Edit1.Text := datalist.Strings[0]; Edit2.Text := datalist.Strings[1]; Memo1.Lines.CommaText := datalist.Strings[2]; end; finally datalist.Free; end; |
cu
Narses