Autor Beitrag
frodo81
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Di 23.11.04 12:47 
Hallo zusammen!

Ich habe folgende Schwierigkeit:

Es gelingt mir, Objekte mit einem Stream zu speichern und diese dann auch wieder fehlerfrei zu laden. Allerdings nur dann, wenn das programm zwischendurch nicht beendet wurde. Sprich wenn ich meine Objekte speichere, das Pgm. schliesse, wieder öffne und dann die vorhin gespeicherten Objekte wieder laden möchte, geht's nicht mehr... kann mir jemand helfen, bitte?!?! :roll:

hier noch etwas quelltext...

tmpObj: TmyObject;
Stream: TmyStream;
...
Stream.Write(tmpObj,sizeOf(tmpObj));
....
// und dann analog die Ladeprozedur...
Stream.Read(tmpObj,sizeOf(TmyObject));

//ende

wie gesagt, das Ding läuft solange, wie ich das Programm nicht zwischendurch beende!

Danke schon mal im Voraus!
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Di 23.11.04 13:43 
Hallo!

Du speicherst da nicht den Inhalt des Objekts, sondern den Zeiger auf den Speicherbereich, wo das Objekt seine Instanz-Daten ablegt. Da dieser Zeiger bei jedem neuen TObjekt.Create ein anderer ist und nach einem Destroy dieser Speicher freigegeben wird, kracht es nach einem Neustart, aber auch innerhalb des Programms ist das eigentlich unsinnig, wenn das Objekt zwischendurch freigegeben und erneut erstellt wird.

Du musst stattdessen Lade- und Schreibmethoden des Objekts ala "Objekt.LoadFromStream"/"Objekt.SaveToStream" aufrufen. Sind diese nicht vorhanden, müssen sie erstellt werden.

Cu,
Udontknow