Temat: Tablice dynamiczne w Turbo Delphi
Tablice dynamiczne warto stosować tam gdzie nie możemy z góry określić ile będzie elementów w tej tablicy i jest to celowe w tym przypadku. Stosuje się je np. w definicjach niektórych funkcji przeznaczonych do operacji na tablicach których rozmiar może być różny.
Jeżeli nie wiemy ile elementów ma mieć tablica i zadeklarujemy dużą liczbe elementów np. 10000, to taka tablica zajmuje niepotrzebnie dużo miejsca w pamięci w przypadku gdy wykorzystane są np. tylko 4 pierwsze elementy tablicy.
Przykład 1
type
Pinteger = ^integer;
var
n: integer;
A: Pinteger; // równoważne A: array[0..dowolna_liczba] of integer;
i: integer;
begin
n:=100; //ustalamy wielkość tablicy na 100 elementów
GetMem(A,n*sizeof(integer));
for i:=0 to n-1 do
begin
A[i]:=i;
Writeln('Element tablicy: ',i,'=',A[i]);
end;
FreMem(A,n*sizeof(integer));
end.
Przykład 2
var
A: array[0..1000] of integer;
i: integer;
begin
for i:=0 to 50 do
begin
A[i]:=i;
Writeln('Element tablicy: ',i,'=',A[i]);
end;
end.
W przykładzie 1 ilość elementów tablicy możemy ustalić dowolnie.
W przykładzie 2 ilość elementów tablicy jest ustalona ale duża liczba elementów nie jest wykorzystana. Wiec przykład 1 jest stosowany w przypadkach gdy nie możemy ustalić ile elementów będzie miała tablica ale może powodować błędy w programie. Już to testowałem. Przedstawione powyżej przykłady działają w Lazarus / Free Pascal, w Delphi mogą być problemy.
Dariusz Rorat edytował(a) ten post dnia 09.11.09 o godzinie 21:50