AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi TStringList in Datei/File speichern und laden
Thema durchsuchen
Ansicht
Themen-Optionen

TStringList in Datei/File speichern und laden

Ein Thema von Pytroxis · begonnen am 27. Apr 2019 · letzter Beitrag vom 28. Apr 2019
Antwort Antwort
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#1

AW: TStringList in Datei/File speichern und laden

  Alt 27. Apr 2019, 20:52
Du musst die Gesamt-Stringlist erzeugen, dann das Array durchlaufen und die Einzellisten mit AddStrings in die Gesamt-Stringlist packen. Etwa so:
Delphi-Quellcode:
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;
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.

Grüße
Dalai
  Mit Zitat antworten Zitat
Pytroxis

Registriert seit: 12. Apr 2019
46 Beiträge
 
#2

AW: TStringList in Datei/File speichern und laden

  Alt 27. Apr 2019, 21:31
Du musst die Gesamt-Stringlist erzeugen, dann das Array durchlaufen und die Einzellisten mit AddStrings in die Gesamt-Stringlist packen. Etwa so:
Delphi-Quellcode:
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;
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.

Grüße
Dalai
Danke für den Tipp bzw. die Hilfe!
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!
  Mit Zitat antworten Zitat
striderx

Registriert seit: 11. Feb 2007
Ort: Bergisch Gladbach
207 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: TStringList in Datei/File speichern und laden

  Alt 27. Apr 2019, 21:47
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?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: TStringList in Datei/File speichern und laden

  Alt 27. Apr 2019, 22:40
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#5

AW: TStringList in Datei/File speichern und laden

  Alt 28. Apr 2019, 07:43
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;

Geändert von samso (28. Apr 2019 um 07:48 Uhr) Grund: Länge von ar sollte gesetzt werden
  Mit Zitat antworten Zitat
Pytroxis

Registriert seit: 12. Apr 2019
46 Beiträge
 
#6

AW: TStringList in Datei/File speichern und laden

  Alt 28. Apr 2019, 09:35
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.
Den Gedanken hatte ich auch schon aber letztlich hast du wohl recht


Mein Vorschlag:
Vielen Dank, werde das später auch mal testen.


Dann frage ich noch mal so:
Welche Möglichkeit sollte ich nun nutzen? Sollte ich eher über Ini-Files gehen oder doch lieber über SaveToFile gehen?
Gibt es bei den beiden Methoden irgendwelche Vor- bzw. Nachteile?


Edit:
Was macht Eigentlich assert() ? Habe es schon mehrfach gesehen aber bisher noch keine Erklärung gesehen :O

Geändert von Pytroxis (28. Apr 2019 um 09:38 Uhr)
  Mit Zitat antworten Zitat
striderx

Registriert seit: 11. Feb 2007
Ort: Bergisch Gladbach
207 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: TStringList in Datei/File speichern und laden

  Alt 28. Apr 2019, 09:48
Welche Möglichkeit sollte ich nun nutzen? Sollte ich eher über Ini-Files gehen oder doch lieber über SaveToFile gehen?
Ini-Files sind dazu da, um Initialisierung-Information zu speichern und sollten nicht für die Datenhaltung mißbraucht werden. Ich würde mir die Gesamt-Liste mit Trenn-Strings zusammenbastel, mit SaveToFile in eine Datei speichern und dann nach dem Laden sequentiell durchgegehen und anhand der Trennstrings wieder zerlegen.
  Mit Zitat antworten Zitat
Pytroxis

Registriert seit: 12. Apr 2019
46 Beiträge
 
#8

AW: TStringList in Datei/File speichern und laden

  Alt 28. Apr 2019, 12:05
Ich würde mir die Gesamt-Liste mit Trenn-Strings zusammenbastel, mit SaveToFile in eine Datei speichern und dann nach dem Laden sequentiell durchgegehen und anhand der Trennstrings wieder zerlegen.
Dann mache ich es auf Basis des Codes eines Vorredners
  Mit Zitat antworten Zitat
striderx

Registriert seit: 11. Feb 2007
Ort: Bergisch Gladbach
207 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: TStringList in Datei/File speichern und laden

  Alt 28. Apr 2019, 09:52
Was macht Eigentlich assert() ? Habe es schon mehrfach gesehen aber bisher noch keine Erklärung gesehen :O
Du weißt schon, dass es in Delphi eine Hilfefunktion gibt?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:29 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