Оператор Sizeof
Префикс унарного оператора sizeof возвращает целочисленную константу, представляющую размер пространства памяти (в байтах), используемого его операндом (определяется его типом, за некоторыми исключениями).
Оператор sizeof может принимать в качестве операнда идентификатор типа или унарное выражение. Нельзя использовать sizeof с выражениями типа функции, неполными типами, заключенными в скобки именами таких типов или с lvalue, обозначающим объект битового поля.
Sizeof в применении к выражению
Если оператор SizeOf применяется к выражению, размер операнда определяется без вычисления выражения (и, следовательно, без побочных эффектов). Результатом операции будет размер типа результата выражения.
Sizeof в применении к типу
Если оператор SizeOf применяется к идентификатору типа, sizeof возвращает размер указанного типа. Единицей измерения размера типа является sizeof (byte), эквивалентный одному байту.
Thus:
sizeof(byte) // возвращает 1 sizeof(integer) // возвращает 2 sizeof(dword) // возвращает 4 sizeof(real) // возвращает 4
Если операнд не является параметром типа массива, результатом будет общее число байтов в массиве (другими словами, имя массива не преобразуется в Тип указателя):
var i, j : integer; samples : array[10] of integer; ... j := sizeof(samples[1]); // j = sizeof(integer) = 2 i := sizeof(samples); // i = 10*sizeof(integer) = 20
Если операнд является параметром, объявленным как тип массива или тип функции, sizeof дает Размер указателя. При применении к записям sizeof дает общее число байтов, включая любое заполнение. Оператор sizeof не может быть применен к функции.