Функция 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 — изменяет размер строки или размер динамического массива.
