Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   TStrings in record = Problem (https://www.delphipraxis.net/126501-tstrings-record-%3D-problem.html)

Super_Chemiker 26. Dez 2008 14:08


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:
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;
zl und listbox1 sind listboxes

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

Neutral General 26. Dez 2008 14:39

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 03:32 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