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 2     12   
Benutzerbild von p80286
p80286

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

AW: TStringList in Datei/File speichern und laden

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

AW: TStringList in Datei/File speichern und laden

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

Registriert seit: 10. Sep 2011
Ort: Gelsenkirchen
42 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: TStringList in Datei/File speichern und laden

  Alt 28. Apr 2019, 13:07
[/QUOTE]Hatte ebenfalls an eine Ini-Gedacht, allerdings wollte ich mal erfragen ob es auch alternativen dazu gibt.[/QUOTE]

JSON. Kan man besser "verschachteln" (also array of array of string) als Ini-Dateien und ist schlanker als XML.
Rudy Velthuis
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.744 Beiträge
 
Delphi 12 Athens
 
#4

AW: TStringList in Datei/File speichern und laden

  Alt 27. Apr 2019, 12:07
Noch mal nachgefragt:
Delphi-Quellcode:
var
  myarr : array[0..n] of tstringlist;
ist das so korrekt?
Vermutlich nicht so ganz:

Bei der Variable handelt es sich um ein dynamischen Array,
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

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

AW: TStringList in Datei/File speichern und laden

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

AW: TStringList in Datei/File speichern und laden

  Alt 27. Apr 2019, 20: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.684 Beiträge
 
Delphi 5 Professional
 
#7

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
 
#8

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
 
#9

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


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 10:51 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