Einzelnen Beitrag anzeigen

Brüggendiek

Registriert seit: 13. Dez 2002
Ort: Dortmund
275 Beiträge
 
Delphi 5 Standard
 
#8
  Alt 21. Mär 2003, 04:13
Hallo!

Kann es sein, daß der Record Real-Typen enthält?

Zitat von DELPHI-Hilfe:
Der generische Typ Real ist in der aktuellen Implementation mit dem Typ Double identisch.

Typ Bereich Signifikante Stellen Größe in Byte
Real 5.0 x 10-324 .. 1.7 x 10308 15-16 8
Hinweis: Der Typ Real48 (6 Byte) hatte in früheren Versionen von Object Pascal den Namen Real. Wenn Sie Quelltext neu compilieren, der den alten, 6 Byte großen Typ Real enthält, sollten Sie diesen Typ in Real48 ändern. Die Compiler-Direktive {$REALCOMPATIBILITY ON} wandelt den Typ Real wieder in den alten 6-Byte-Typ um.

Eine andere Möglichkeit - versuche mal
Delphi-Quellcode:
type
 recordaufbaudef = packed record
    Artikelnummer : string[8];
    .
    .
 end;
Sonst könnte Dir die Speicherausrichtung einen Streich spielen - vielleicht war beim alten Delphi ja eingestellt, daß nicht ausgerichtet werden soll! Ein Wert von mehr als einem Byte nach dem String ist ein guter Kandidat, weil der String ja 9 Bytes belegt - die Ausrichtung fügt Leerbytes ein und schon paßt der Record nicht mehr.

Wenn alles nicht hilft: Dateigröße durch Anzahl der Datensätze (falls bekannt) rechnen und damit die Recordgröße der Datei ermitteln. Dann die Bytes des Records auszählen und auch mal mit dem SizeOf-Wert vergleichen. Ein Hex-Dateibetrachter kann dann auch hilfreich sein. Vielleicht hat das alte Delphi anders ausgerichtet als das neue!
Mir ist nicht bekannt, ob Delphi auch 2-Byte-Werte auf 4-Byte-Grenzen ausrichtet - denkbar, weil der schnellstmögliche Zugriff und die paar Byte schütteln wir doch locker aus dem Ärmel. D3 hat dann möglicherweise "nur" auf gerade Adresse ausgerichtet (verlangte DER Prozessor überhaupt - IBM370 - sogar, 2-Byte-Werte an gerader, 4-Byte-Werte an durch 4 teilbarer Adresse - und das bei vielleicht 1 bis 2 Megabyte Kernspeicher).

BTW: die ganze Ausrichtungsgeschichte (schnellerer Zugriff) beschert uns ja auch die neuen sogennanten 32-Bit-Farbtiefen, die aber nur 24 Bit sind (1024*768 Pixel sind bei 4 Byte/Pixel ja nur 3MByte, die GraKa hat 32 oder 64!)


Gruß

Dietmar Brüggendiek
Dietmar Brüggendiek
  Mit Zitat antworten Zitat