![]() |
AW: TStringList in Datei/File speichern und laden
Hallo,
erstmal eine funktionierenden Version machen. Hör bitte auf mit diesem ständigen "kompakt"... :) |
AW: TStringList in Datei/File speichern und laden
Die Frage ist: was ist "kompakt"?
Irgendwie werde ich das Gefühl nicht los, daß hier ein Format wie .INI oder .XML angebrachter wäre. Oder vielleicht die Ablage in einer DB? eine klitzekleine Änderung in der Textdatei und schon hat man unerklärliches Datenhack. Gruß K-H |
AW: TStringList in Datei/File speichern und laden
Zitat:
Zitat:
Letztlich wird niemand in den Textdateien rumpfuschen. Hatte ebenfalls an eine Ini-Gedacht, allerdings wollte ich mal erfragen ob es auch alternativen dazu gibt. |
AW: TStringList in Datei/File speichern und laden
Mal eine ganz praktische Überlegung: Erstmal solltest du dir Gedanken darüber machen, ob du alles in einer Datei ablegen willst oder jede Stringliste in eine eigene Datei. Das ist übrigens völlig unabhängig davon, ob dynamisches Array oder nicht.
Anders ausgedrückt: Wie du ja selbst schon bemerkt hast, gibt es die Methode TStringList.SaveToFile, die einen Dateinamen als Parameter bekommt. Du hast aber ein
Delphi-Quellcode:
. Willst du also für jede deiner Stringlisten eine separate Datei anlegen? Diese Überlegung ist ja auch fürs Laden mit LoadFromFile relevant.
Array of TStringList
Wenn du alles in eine Datei packen kannst/willst, musst du eine Gesamt-Stringlist erzeugen, diese in einer Schleife befüllen (aus den Listen im Array) und dann das Ergebnis abspeichern. Wenn jede Liste eine eigene Datei bekommen soll, musst du dir Gedanken darüber machen, wie du die Dateinamen zusammenbaust, so dass sie später auch wieder eingelesen werden können (sofern nötig). Grüße Dalai |
AW: TStringList in Datei/File speichern und laden
Zitat:
Zitat:
Delphi-Quellcode:
einer
array of TStringList
Delphi-Quellcode:
zuzuweisen, sodass man
TStringList
Delphi-Quellcode:
nutzen kann? Sprich:
TStringList.SaveToFile
Delphi-Quellcode:
Oder meinst du es anders?
var test : TStringList;
test2 : Array of TStringLIst; ... for i:= 0 to Length(test2) do test[i] := test2[i]; |
AW: TStringList in Datei/File speichern und laden
Du musst die Gesamt-Stringlist erzeugen, dann das Array durchlaufen und die Einzellisten mit AddStrings in die Gesamt-Stringlist packen. Etwa so:
Delphi-Quellcode:
Beachte aber, dass ein nachträgliches Auseinandernehmen nicht möglich ist, d.h. ein Einlesen geht nur komplett als einzelne Stringliste, es sei denn, du weiß, wie weit du lesen müsstest, aber das ist auch nicht wirklich zuverlässig.
var
ar: array of TStringList; procedure blub; var sl: TStringList; i: integer; begin sl:= TStringList.Create; try for i:= Low(ar) to High(ar) do begin sl.AddStrings(ar[i]); end; sl.SaveToFile(...); finally sl.Free; end; end; Grüße Dalai |
AW: TStringList in Datei/File speichern und laden
Zitat:
Aber das laden in einzelne Teile ist leider wichtig, werde es dann mal mit Ini-Files probieren, darüber müsste es eigentlich gehen. Vielen Dank an alle die mir geholfen haben! :) |
AW: TStringList in Datei/File speichern und laden
Warum fügst du nicht beim Zusammenbauen der Gesamt-Stringlist vor jeder Teilliste jeweils einen Markierungsstring ein, anhand dessen du später nach dem laden die Gesamt-Liste wieder auseinander nehmen kannst?
|
AW: TStringList in Datei/File speichern und laden
Du unterliegst einem Trugschluss. Kompakter Code ist unverständlicher und bedarf mehr Erklärung. Guter, verständliche, selbsterklärender Code benötigt weniger Erklärung. Benenne Variablen und Routinen "sprechend" und der Code erklärt sich fast von selbst.
|
AW: TStringList in Datei/File speichern und laden
Mein Vorschlag:
Delphi-Quellcode:
var
ar: array of TStringList; procedure save(const Filename: String); var sl: TStringList; i: integer; begin sl:= TStringList.Create; try for i:= Low(ar) to High(ar) do begin sl.Add(ar[i].Commatext); end; sl.SaveToFile(Filename); finally sl.Free; end; end; procedure load(const Filename: String); var sl: TStringList; i: integer; begin assert(Length(ar)=0); sl:= TStringList.Create; try s1.LoadFromFile(Filename); SetLength(ar, s1.Count); for i:= 0 to s1.Count-1 do begin ar[i] := TStringList.Create; ar[i].Commatext := s1[i]); end; finally sl.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz