SizeOf
volgar
SizeOf
Moduł: System
Funkcja zwracająca rozmiar podanej zmiennej (lub typu) w bajtach.
Przykład:
var
B : Byte;
I : Integer;
begin
WriteLn(SizeOf(B)); // program wyświetli 1
WriteLn(SizeOf(I)); // program wyświetli 4
end;
Dzięki tej funkcji możemy zobaczyć również ile miejsca w pamięci zajmuje zadeklarowany przez nas rekord.
Przykład:
type
TMojRekord = packed record
B : Byte;
W : Word;
I : Integer;
end;
var
MojRekord : TMojRekord;
begin
WriteLn(SizeOf(MojRekord)); // program wyświetli 7
WriteLn(SizeOf(TMojRekord)); // program również wyświetli 7
end;
Wyjątkiem dla funkcji SizeOf
może być próba uzyskania rozmiaru łańcucha znaków String.
Przykład:
var
S : String;
begin
S := 'jakiś tekst';
WriteLn(SizeOf(S)); // program wyświetli 4
S := 'jakiś inny tekst';
WriteLn(SizeOf(S)); // program też wyświetli 4
end;
Sytuacja ta jest spowodowana tym, że typ String jest tak naprawdę wskaźnikiem. Wielkość łańcucha możemy sprawdzić tylko wtedy gdy nałożymy na niego ograniczenie długości.
Przykład:
var
S : String[30];
begin
WriteLn(SizeOf(S)); // program wyświetli 31
end;
Spytasz pewnie, dlaczego program zwraca wartość 31, a nie 30? Jest to spowodowane tym, że każdy łańcuch typu ShortString (a takim łańcuchem jest łańcuch o określonym maksymalnym rozmiarze) w elemencie o indeksie 0 zawiera liczbę określającą swoją rzeczywistą długość.
Przykład:
var
S : String[0];
begin
WriteLn(SizeOf(S)); // program wyświetli 1
end;