Uncle - Do 23.10.03 10:37
Titel: Speichern/Laden von typisierten Dateien
Hallo alle zusammen, ich bräuchte da wirklich mal ein wenig Hilfe. Ich habe mein Problem auf diese wenigen Zeilen reduziert und kann den Fehler nicht entdecken.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36:
| Interface .. type TDepp = class Name: string; end; .. implementation .. procedure save; var d: TDepp; f: file of TDepp; begin d:= TDepp.create; d.name:='f*** OFF!!!'; assignfile(f,'c:\Test\Depp.dat'); rewrite(f); write(f,d); closefile(f); d.free; end;
procedure Load; var d: TDepp; f: file of TDepp; begin d:= TDepp.create; assignfile(f,'c:\Test\Depp.dat'); Reset(f); Read(f,d); showmessage(d.name); CloseFile(f); d.free; end; |
Das Interessante ist auch, dass er auch kompiliert, wenn ich in der Load-Prozedur gar keine d-Instanz instanziert habe! Die Ausgabe verändert sich ebenfalls nicht.
Ich habe es auch mit einem beschränktem String, char und integer unter TDepp probiert, aber die Ausgabe blieb dieselbe.
Ich bitte um möglichst schnelle Hilfe.
Vielen Dank im Vorraus!
Uncle
Moderiert von
Klabautermann: Delphi-Tags hinzugefügt.
Klabautermann - Do 23.10.03 10:46
Hallo,
ich Tippe mal drauf, dass das Problem ist, das du eine Klasse speichern willst. Der Typer dieser Lautet Pointer und somit speicherst du nur diesen. Da selbe gild übrigens auch für Strings Varialbler länge. Da dann Delphi die Blockgröße nicht bestimmen, und ihn somit nicht Typisiert speichern.
Ändere also dein
Delphi-Quelltext
1: 2: 3:
| TDepp = class Name: string; end; |
in
Delphi-Quelltext
1: 2: 3:
| tDepp = packed record Name : string[75]; end; |
Ein Demo für das Arbeiten mit Typisierten Dateien kannst du übrigens
hier [
http://downloads.oitmann.de/samples] runterladen.
Gruß
Klabautermann