Функція SizeOf в Delphi повертає розмір типу або змінної в байтах.
System unit
- function SizeOf (Variable : Any type) : Integer;
- function SizeOf (Type) : Integer;
Функція SizeOf повертає розмір (в байтах) змінної (Variable) або типу (Type).
Часто корисно дізнатися, скільки місця займають дані. Особливо при використанні стандартних процедур начебто GetMem.
Для деяких типів завжди повертається розмір покажчика, оскільки вони є просто покажчиками на дані, що зберігаються цим типом. Прикладом таких типів є рядки.
Для отримання розміру об'єкта використовуйте метод InstanceSize.
Функція SizeOf: Показ розміру деяких типів даних і змінних
var
intNumber : Integer;
extNumber : Extended;
sentence : string;
begin
// Показ розмірів чисельних типів даних
ShowMessageFmt(' SizeOf(Integer) = %d',[SizeOf(Integer)]);
ShowMessageFmt('SizeOf(intNumber) = %d',[SizeOf(intNumber)]);
ShowMessageFmt(' SizeOf(Extended) = %d',[SizeOf(Extended)]);
ShowMessageFmt('SizeOf(extNumber) = %d',[SizeOf(extNumber)]);
// Строкові типи та змінні - вказівники на фактичні рядки
sentence := 'A long sentence, certainly longer than 4';
ShowMessageFmt(' SizeOf(string) = %d',[SizeOf(string)]);
ShowMessageFmt(' SizeOf(sentence) = %d',[SizeOf(sentence)]);
end;
Результат
SizeOf(Integer) = 4
SizeOf(intNumber) = 4
SizeOf(Extended) = 10
SizeOf(extNumber) = 10
SizeOf(string) = 4
SizeOf(sentence) = 4
Функція SizeOf: Використання GetMem для розподілу пам'яті для десяти записів
type
TRecord = Record
name : string[10];
age : Byte;
end;
var
recStorage : PChar;
begin
// Показ розміру нашого типу запису
ShowMessageFmt(' SizeOf(TRecord) = %d',[SizeOf(TRecord)]);
// Розподіл пам'яті для цих 10 записів
GetMem(recStorage, 10 * SizeOf(TRecord));
end;
Результат
SizeOf(TRecord) = 12
Схожі функції та команди
Length — повертає кількість елементів у масиві чи рядку.
SetLength — змінює розмір рядка або динамічний масив.
