Я не хочу вас сильно смущать, но есть и проблема выравнивания;Если вы определите запись, подобную этой, то от компилятора будет зависеть, как будет выглядеть ее макет:
type Test = record
A: Byte;
B: Pointer;
end;
Если скомпилировано с {$ A1}, SizeOf(Test)
при компиляции будет иметь значение 5с помощью {$ A4} вы получите 8 (по крайней мере, на нынешних 32-битных Delphi, то есть!) Здесь есть все виды маленьких ошибок, поэтому я бы посоветовал проигнорировать это сейчас и прочитать статью, подобную этой когда возникает необходимость; -)