![]() |
TStringList aus Datei nicht definierten Typs wieder einlesen
Hallo!
Ich habe mit BlockWrite den Inhalt eines TStringList-Ausdrucks in eine Datei geschrieben. Wie kann ich dies nun wieder in eine solche Variable einlesen? Danke Leute! PAX |
Re: TStringList aus Datei beliebigen Typs wieder einlesen
Hi,
was macht das Wetter am St. Nikolai? Die Frage ist: 'wie' hast Du mit Blockwrite geschrieben. |
Re: TStringList aus Datei beliebigen Typs wieder einlesen
Is grad stockdunkel draußen und regnet zur Zeit nicht ;-) . Wenns morgen früh auch nicht regnet, wenn ich mit dem Fahrrad fahre, dann is der Tach wenigstens schon zumindest ein bisschen gerettet.
Ja, du meinst "wie" hab ich TStringList in file geschrieben? Ich hab einfach: BlockWrite(DatenDatei,TStringsVariable,1); PAX |
Re: TStringList aus Datei beliebigen Typs wieder einlesen
Warum benutzt du nicht die Methode SaveToFile von TStringlist? :gruebel:
|
Re: TStringList aus Datei beliebigen Typs wieder einlesen
Weil ich es nicht in eine Textfile gespeichert haben möchte. Ich weiß nicht in welcher Form es BlockWrite macht (wüsste ich auch mal gern :-) ), aber in dieser verschlüsselten Form muss es geschehen. Dazu kommt noch, dass in selbiger Datei mit BlockWrite Inhalt von String-Ausdrücken gespeichert wurde.
Es muss doch möglich sein, das wieder einzulesen, wenns auch zu schreiben ging?! PAX |
Re: TStringList aus Datei nicht definierten Typs wieder einl
Im Prinzip funktioniert das etwa so:
Delphi-Quellcode:
procedure BlockWriteStringList(sl: TStrings; FileName: TFileName);
var lIntSize, toWrite: LongInt; fil: file; begin AssignFile(fil, filename); try Rewrite(fil, 1); try lIntSize := SizeOf(toWrite); toWrite := Length(sl.Text); BlockWrite(fil, toWrite, lIntSize); if toWrite > 0 then BlockWrite(fil, sl.Text[1], toWrite); finally CloseFile(fil); end; except end; end; procedure BlockReadStringList(sl: TStrings; FileName: TFileName); var s: string; lIntLth, lth: LongInt; fil: file; begin AssignFile(fil, filename); try Reset(fil, 1); lIntLth := SizeOf(lth); try BlockRead(fil, lth, lIntLth); if lth > 0 then begin SetLength(s, lth); BlockRead(fil, s[1], lth); sl.Text := s; end else sl.Text := ''; finally CloseFile(fil); end; except end; end; // Testen: procedure TfrmMain.Button1Click(Sender: TObject); var SL: TStringList; begin sl := TStringList.Create; try // Der Stringliste Items hinzufügen SL.Add('test1'); SL.Add('test2'); SL.Add('test3'); // Stringliste in Datei speichern BlockWriteStringList(SL, 'c:\temp\test.dat'); // Stringliste löschen SL.Clear; // StringListe laden BlockReadStringList(SL, 'c:\temp\test.dat'); // 2. Item der StringListe anzeigen ShowMessage(SL[1]); finally SL.Free; end; end; |
Re: TStringList aus Datei nicht definierten Typs wieder einl
Das heißt, er schreibt in diese Datei verschlüsselt jede einzelne Zeile des TStrings immer jeweils als neuen Block, als wenn ich jede Zeile einem anderen String zuorde und mit BlockWrite schreibe?
PAX |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:01 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