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
Seite 2 von 3     12 3      
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#11

AW: TStringList in Datei/File speichern und laden

  Alt 27. Apr 2019, 17:53
Hallo,
erstmal eine funktionierenden Version machen.
Hör bitte auf mit diesem ständigen "kompakt"...
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#12

AW: TStringList in Datei/File speichern und laden

  Alt 27. Apr 2019, 18:14
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Pytroxis

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

AW: TStringList in Datei/File speichern und laden

  Alt 27. Apr 2019, 18:28
Hallo,
erstmal eine funktionierenden Version machen.
Hör bitte auf mit diesem ständigen "kompakt"...
Kompakt ist in meinem Fall aber wichtig, muss wie gesagt den gesamten Code + Interface, etc. auf ca. 12 Seiten erklären. Jeder Schnipsel Code denn ich mehr benötige benötigt auch mehr Erklärung und da der Raum bzw. die Seitenanzahl limitiert ist muss ich halt möglichst kompakt und kurz schreiben.


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
Prinzipiell keine schlechte Idee, allerdings ist dieses "Projekt" ein Teil meiner Facharbeit.
Letztlich wird niemand in den Textdateien rumpfuschen. Hatte ebenfalls an eine Ini-Gedacht, allerdings wollte ich mal erfragen ob es auch alternativen dazu gibt.
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#14

AW: TStringList in Datei/File speichern und laden

  Alt 27. Apr 2019, 20:24
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 Array of TStringList . Willst du also für jede deiner Stringlisten eine separate Datei anlegen? Diese Überlegung ist ja auch fürs Laden mit LoadFromFile relevant.

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
  Mit Zitat antworten Zitat
Pytroxis

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

AW: TStringList in Datei/File speichern und laden

  Alt 27. Apr 2019, 21:06
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.
Am besten alles in einer Datei, denke, dass so auch das Laden einfacher ist.

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 Array of TStringList . Willst du also für jede deiner Stringlisten eine separate Datei anlegen? Diese Überlegung ist ja auch fürs Laden mit LoadFromFile relevant.
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).
Bin gerade leider unterwegs und demnach nicht am Rechner. Ist es überhaupt möglich ein array of TStringList einer TStringList zuzuweisen, sodass man TStringList.SaveToFile nutzen kann? Sprich:
Delphi-Quellcode:
var test : TStringList;
test2 : Array of TStringLIst;
...
for i:= 0 to Length(test2) do
 test[i] := test2[i];
Oder meinst du es anders?
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#16

AW: TStringList in Datei/File speichern und laden

  Alt 27. Apr 2019, 21: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
 
#17

AW: TStringList in Datei/File speichern und laden

  Alt 27. Apr 2019, 22: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
Online

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

AW: TStringList in Datei/File speichern und laden

  Alt 27. Apr 2019, 22: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
 
#19

AW: TStringList in Datei/File speichern und laden

  Alt 27. Apr 2019, 23: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
 
#20

AW: TStringList in Datei/File speichern und laden

  Alt 28. Apr 2019, 08: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 08:48 Uhr) Grund: Länge von ar sollte gesetzt werden
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 13:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz