Zadeklarowałem dynamiczną tablicę i stopniowo zwiększając jej długość dodawałem elementy:
implementation
var Ob:byte; //do zwiększania długości tablicy w razie wykrycia szukanego znaku (tutaj spacji)
PauArr:array of integer; //tablica dynamiczna
TL:String;
procedure SzukSpacji;
var i:byte;
begin
for i := 1 to Length(TL) do
if TL[i]=' ' then
begin
Ob:=Ob+1;
SetLength(PauArr,Ob);
PauArr[Ob]:=i;
ShowMessage(IntToStr(PauArr[Ob]));// pokazuje że rzeczywiście wartość została dodana do tablicy
end;
end;
Rzeczywiście mam potwierdzenie że elementy są dodawane do tablicy prawidłowo: (ShowMessage(IntToStr(PauArr[Ob])); )
Ale.. jeżeli chcę dostać się do tablicy z innej procedury:
procedure SprawdzTablice;
var n:byte;
begin
For n:=1 to Length(PauArr) do
ShowMessage(IntToStr(PauArr[n]));
end;
To okazuje się że wszystkie elementy tablicy dynamicznej mają wartość zero (0).
Sprawdzałem dokładnie to samo ale ze zwykłą (niedynamiczną) jednowymiarową tablicą
(PArr: array[1..20] of integer;) i wówczas wszystko jest dobrze to znaczy można pobierać prawidłowe wartości tablicy z innych procedur niż ta w której tablica była wypełniana.
Co jest przyczyną że moja tablica dynamiczna zachowuje się nieprawidłowo (traci dodane wartości)?