У меня странная проблема при преобразовании кода из Delphi 7 в 2010. Это связано с записями. Определенная ниже запись, если ее размер в D7, составляет 432 байта, а в D2009 (и 2010) - 496. Я знаю, что простое решение - сделать ее упакованной записью, тогда все версии получатся до 426 байтов ... Однако у нас есть данные, хранящиеся там, где мы транслировали запись, и теперь мы пытаемся прочитать эти потоки на более новом языке.
TToTry = Record
a,b,c,d : Extended;
e,f,g,h : Extended;
i : String[15];
j,k,l,m,n,o,p,q,r,s,t : Array[1..3] of Extended; End;
Исследуя эту проблему, я создал еще одну запись, и по какой причине размеры такие же? Запись меньше, но имеет те же типы данных. но он имеет одинаковый размер во всех версиях языка.
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;
Кто-нибудь знает, почему одна запись такая разная, а другая такая же? Наверняка что-то связанное с выравниванием границ байтов в Delphi. но что так кардинально изменилось от одной версии к другой?