Ich habe ein seltsames Problem bei der Konvertierung von Code von Delphi 7 nach 2010. Es hat mit Datensätzen zu tun. Der unten definierte Datensatz ist in D7 432 Bytes und in D2009 (und 2010) 496. Ich weiß, dass es eine einfache Lösung ist, einen gepackten Datensatz zu erstellen, dann kommen alle Versionen auf 426 Bytes ... Wir haben jedoch Daten gespeichert, wo wir den Datensatz gestreamt haben und jetzt versuchen wir, diese Streams mit einer neueren Sprache zu lesen.Delphi 7 im Vergleich zu 2009 (& 2010) Rekordgrößen
Bei der Untersuchung dieses Problems habe ich einen anderen Datensatz erstellt, und aus welchen Gründen auch immer sind die Größen gleich? Der Datensatz ist kleiner, hat jedoch die gleichen Datentypen. aber es kommt in allen Versionen der Sprache gleich groß raus.
TMyRecord = Record
Ext1 : Extended;
Ext2 : Extended;
Ext3 : Extended;
Ext4 : Extended;
Ext5 : Extended;
Ext6 : Extended;
Int1 : Integer;
Int2 : Integer;
char1 : AnsiChar;
char2 : AnsiChar;
MyString : String[15];
Arr1 : Array[1..3] of Extended;
Arr2 : Array[1..3] of Extended; end;
Jeder hat einen Einblick, warum ein Datensatz so anders ist, und der andere ist der gleiche? Etwas, was mit den Randlinienausrichtungen in Delphi zu tun hat. aber was hat sich von einer version zur nächsten so drastisch geändert?
Ich weiß, dass die Standard-Byte-Ausrichtung für Delphi-Datensätze in einer aktuellen Version (2009 denke ich) geändert, aber ich bin mir nicht sicher über die Details. –