Entwickler-Ecke
Dateizugriff - Objekte mit Stream speicher und wieder laden
frodo81 - Di 23.11.04 12:47
Titel: Objekte mit Stream speicher und wieder laden
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 - 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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!