Замечания и примеры |
Вверх Предыдущий Следующий |
Free Pascal также поддерживает 'упакованную запись' (packed record), которая представляет собой запись, где все элементы выровнены по границе байта. В результате, два следующих объявления эквивалентны: {$PackRecords 1} Trec2 = Record A : Byte; B : Word; end; {$PackRecords default} и Trec2 = Packed Record A : Byte; B : Word; end; Обратите внимание на {$PackRecords Default} после первого объявления, чтобы восстановить настройки по умолчанию! Учитывая зависимость от характера платформы, как записи расположены в памяти, единственный способ обеспечить совместимое расположение на разных платформах можно с помощью {$PACKRECORDS 1} (учитывая , что все поля объявляются с помощью записи имеют те же значения на этой же платформе). В частности, если должен быть прочитан типизированный файл с записями, созданный программой на Turbo Pascal, то прочитать файл правильно не всегда будет возможно. Причина заключается в том, что установка {$PACKRECORDS N} по умолчанию Free Pascal не обязательно совместим с Turbo Pascal. Оно может быть изменено в зависимости от установки {$PACKRECORDS 1} или {$PACKRECORDS 2}, используемой в программе на Turbo Pascal , которая создала файл (хотя она может закончится неудачно и с {$PACKRECORDS 2 } из - за различных требований выравнивания типа между 16 битной MSDOS и текущей платформой). То же замечание относится и к Delphi: обмен данными будет возможен, только если и источник, и приёмник используют упакованную запись, или если оба находятся на одной платформе, и используют те же настройки {$PACKRECORDS X}. |