У меня странная проблема при преобразовании кода из Delphi 7 в 2010. Это связано с записями. Запись, определенная ниже, при размере в D7, составляет 432 байта, а в D2009 (и 2010) - 496. Я знаю, что легкое решение состоит в том, чтобы сделать ее упакованной записью, тогда все версии выходят до 426 байт ... Однако у нас есть данные, хранящиеся там, где мы потопили запись, и теперь мы пытаемся прочитать эти потоки с более новым языком.Delphi 7 по сравнению с 2009 годом (& 2010) Размеры записей
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. но что так резко изменилось с одной версии на другую?
Я знаю, что выравнивание байтов по умолчанию для записей Delphi изменилось в последней версии (думаю, 2009), но я не уверен в деталях. –