Hi,
ich bin hier langsam am Verzweifeln.
Folgendes Problem:
Es existiert ein Delphi 4 Programm, das mehrere Records in einer Datei abspeichert (ganz einfach mit write(datei,record)).
Der Record besteht aus mehreren Strings, integer, word, bool, currency und DateTime.
Will ich nun in Delphi 2007 diesen Record über read(datei,person) mit exakt derselben Record-Typendefinition auslesen, so werden haufenweise falsche Dateien zurückgegeben.
Zwei Ursachen konnte ich bereits ausmachen:
Zum einen ist in Delphi 4 ein Integer nur 2 Byte lang, was in Delphi 2007 einem smallint entspricht.
Zum anderen speichert Delphi 4 einen bool in 4 Bytes ab, was in Delphi 2007 einem longbool entspricht.
Aber nach Abänderung der Record-Typdefinition klappt das Auslesen immernoch nicht richtig.
Also habe ich exakt denselben Recordset einmal in Delphi 4 und einmal in Delphi 2007 abgespeichert (in Delphi 2007 allerdings mit den oben genannten Änderungen).
Und wie erwartet, sind die Dateien nicht exakt dieselben (betrachtet mit einem Hex-Editor).
Mir kommt es so vor, als ob die beiden Version unterschiedlich und relativ willkürlich an bestimmten Stellen 0-Byte-Folgen einfügen, woraus die Ausleseprobleme resultieren.
Im Anhang finden sich die beiden Dateien im Hexformat sowie die Typendefinitionen des Records.
Meine Frage ist nun: Wieso sind die Datentypen(?) bzw. die Abspeicherung eines Records in den beiden Version nicht gleich? Und wie kann ich dieses Problem beseitigen?
Mir ist klar, dass ich die Datei byteweise auslesen könnte, aber das ist nicht Sinn der Sache und nur als letzte Möglichkeit in Betracht zu ziehen.
Vielen Dank bereits im Voraus!
mfg
Freeze24
ich bin hier langsam am Verzweifeln.
Folgendes Problem:
Es existiert ein Delphi 4 Programm, das mehrere Records in einer Datei abspeichert (ganz einfach mit write(datei,record)).
Der Record besteht aus mehreren Strings, integer, word, bool, currency und DateTime.
Will ich nun in Delphi 2007 diesen Record über read(datei,person) mit exakt derselben Record-Typendefinition auslesen, so werden haufenweise falsche Dateien zurückgegeben.
Zwei Ursachen konnte ich bereits ausmachen:
Zum einen ist in Delphi 4 ein Integer nur 2 Byte lang, was in Delphi 2007 einem smallint entspricht.
Zum anderen speichert Delphi 4 einen bool in 4 Bytes ab, was in Delphi 2007 einem longbool entspricht.
Aber nach Abänderung der Record-Typdefinition klappt das Auslesen immernoch nicht richtig.
Also habe ich exakt denselben Recordset einmal in Delphi 4 und einmal in Delphi 2007 abgespeichert (in Delphi 2007 allerdings mit den oben genannten Änderungen).
Und wie erwartet, sind die Dateien nicht exakt dieselben (betrachtet mit einem Hex-Editor).
Mir kommt es so vor, als ob die beiden Version unterschiedlich und relativ willkürlich an bestimmten Stellen 0-Byte-Folgen einfügen, woraus die Ausleseprobleme resultieren.
Im Anhang finden sich die beiden Dateien im Hexformat sowie die Typendefinitionen des Records.
Meine Frage ist nun: Wieso sind die Datentypen(?) bzw. die Abspeicherung eines Records in den beiden Version nicht gleich? Und wie kann ich dieses Problem beseitigen?
Mir ist klar, dass ich die Datei byteweise auslesen könnte, aber das ist nicht Sinn der Sache und nur als letzte Möglichkeit in Betracht zu ziehen.
Vielen Dank bereits im Voraus!
mfg
Freeze24
Comment