SizeOf




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;
Informacje
Ostatnia modyfikacja 07-08-2006 00:39 Ostatni autor Morris
Ilość wyświetleń 4406 Wersja 3
Komentarz

Katalog
Copyright © 2000-2006 by Coyote Group 0.9.3-pre3
Czas generowania strony: 0.0637 sek. (zapytań SQL: 10)