Найдено 3 результата

Mikha
28.07.2010 19:25:56
Форум: Free Pascal Compiler
Тема: Выравнивание полей в записи (Record)
Ответы: 4
Просмотры: 4647

Re: Выравнивание полей в записи (Record)

Нашел ответ на свой вопрос: http://wiki.freepascal.org/User_Changes_2.4.0#Alignment_of_record_variables
Если вкратце, то чтобы всегда быть уверенным в размере записи ее необходимо объявить как упакованную (packed). Про опцию {$PackRecords N} можно забыть - в общем случае она не ...
Mikha
26.07.2010 20:48:28
Форум: Free Pascal Compiler
Тема: Выравнивание полей в записи (Record)
Ответы: 4
Просмотры: 4647

Re: Выравнивание полей в записи (Record)

>>Brainenjii
Попробовал, результат ожидаемый - все записи имеют минимальный размер (выровнены по границе одного байта);
Как работает выравнивание (если оно вообще работает) так и не понял. Даже простейший пример дает не те результаты, которые я ожидаю:
procedure PackRecordsDemo2;
type ...
Mikha
21.07.2010 21:50:40
Форум: Free Pascal Compiler
Тема: Выравнивание полей в записи (Record)
Ответы: 4
Просмотры: 4647

Выравнивание полей в записи (Record)

Код из справки (ref) по fpc
Program DemoRecords;

type
{$PackRecords 2}
TRec1 = Record
A : Byte;
B : Word;
end;
{$PackRecords 1}
TRec2 = Record
A : Byte;
B : Word;
end;
{$PackRecords 2}
TRec3 = Record
A,B : Byte;
end;
{$PackRecords 1}
TRec4 = Record
A,B &#58 ...