![]() |
TStrings in record = Problem
Hi
Delphi-Quellcode:
TSaven = record
BRS: TStrings; PTr: TStrings; end;
Delphi-Quellcode:
var
Form1: TForm1; Save: TSaven; Datei: TFileStream;
Delphi-Quellcode:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin try Datei := TFileStream.Create('CalcyData.dat',fmCreate); Save.BRS := ZL.Items; save.PTr := form2.ListBox1.Items; Datei.Write(Save,SizeOf(Save)); Datei.Free; except end; end;
Delphi-Quellcode:
zl und listbox1 sind listboxes
procedure TForm1.FormCreate(Sender: TObject);
begin calc := 0; try Datei := TFileStream.Create('CalcyData.dat',fmOpenRead); Datei.Read(Save,SizeOf(Save)); ZL.Items := save.BRS; form2.ListBox1.Items := save.PTr; except ZL.Items.Text := 'Bisherige Rechenschritte:'; end; Datei.Free; end; Problem: wenn ich das ding nutze, werden den listboxes items hinzugefügt, aber wenn ich es beende und wieder öffne sind die weg!! wo liegt mein problem denn nun? :wall: Grüße |
Re: TStrings in record = Problem
Hi,
Das Problem ist, dass du nur die beiden Pointer zu den TStrings-Instanzen in deiner Datei speicherst. Du musst zuerst die Anzahl der Strings in einer Liste speichern, dann jeden String einzeln. Und zu jedem String schreibst du vorher noch die Länge in die Datei. Also so:
Code:
--------------------------
Anzahl der Strings in BRS -------------------------- ---------------- String1 Länge ---------------- ---------------- String1 ---------------- ---------------- String2 Länge ---------------- ---------------- String2 ---------------- -------------------------- Anzahl der Strings in PTr -------------------------- ---------------- String1 Länge ---------------- ---------------- String1 ---------------- ---------------- String2 Länge ---------------- ---------------- String2 ---------------- |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:53 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