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
 
Pytroxis

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

AW: TStringList in Datei/File speichern und laden

  Alt 27. Apr 2019, 16:31
Guten Morgen,

prinzipiell ist mir bekannt wie ich eine TStringList speichern und laden könnte, allerdings sieht meine Situation wie folgt aus:
Bei der Variable handelt es sich um ein dynamischen Array, demnach ist das abspeichern erschwert und das laden erst recht.
In meinem Fall nutze ich den SaveDialog , sowie den OpenDialog .
Wie kann ich den Array am geschicktesten abspeichern und laden?
Beim speichern würde ich eine Schleife nehmen, allerdings habe ich beim laden keinen Plan, da ja die Länge des Arrays, beim laden, unbekannt ist
Ist es notwendig, das die erzeugte Datei wirklich Text ist, oder kann es auch ein Binärformat sein? Wenn das geht kannst Du die TReader- und TWriter-Klassen verwenden:

Delphi-Quellcode:
type
  TStringArrayFiler = class(TObject)
  public
    class procedure LoadArray(var aArray: TArray<string>; const aFilename: string);
    class procedure SaveArray(const aArray: array of string; const aFilename:
        string);

  end;

class procedure TStringArrayFiler.LoadArray(var aArray: TArray<string>; const
    aFilename: string);
var
  LStream: TFilestream;
  LReader: TReader;
  I: Integer;
begin
  LStream := TFilestream.Create(aFilename, fmOpenRead or fmShareDenyWrite);
  try
    LReader := TReader.Create(LStream, 4096);
    try
      SetLength(aArray, LReader.ReadInteger);
      for I := Low(aArray) to High(aArray) do
        aArray[I] := LReader.ReadString;
    finally
      LReader.Free;
    end;
  finally
    LStream.Free;
  end;
end;

class procedure TStringArrayFiler.SaveArray(const aArray: array of string;
    const aFilename: string);
var
  LStream: TFilestream;
  LWriter: TWriter;
  I: Integer;
begin
  LStream := TFilestream.Create(aFilename, fmCreate);
  try
    LWriter := TWriter.Create(LStream, 4096);
    try
      LWriter.WriteInteger(Length(aArray));
      for I := Low(aArray) to High(aArray) do
        LWriter.WriteString(aArray[I]);
    finally
      LWriter.Free;
    end;
  finally
    LStream.Free;
  end;
end;
Vielen Dank schon einmal!
Aber gibt es vielleicht eine kompaktere Version bzw. eine kompaktere Möglichkeit?


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,
Jep du liegst natürlich richtig, bei einem dynamischen Array ist das leider nicht möglich
  Mit Zitat antworten Zitat
 


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:06 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