Cześć. Mam pewien problem. Otóż sprawa wygląda tak:
Mam kilka tablic dynamicznych: generated, pom i tab.
I jest coś takiego:
//generated:=nil; - też było wcześniej
setLength(generated, form1.generateCountSpin.Value);
//tutaj pewna pętla - operacje na tablicy tab - tu wszystko ok
//porządna pętla:
for stat:=1 to form1.generateCountSpin.Value do
begin
//losowanie
setLength(pom, 6);
//tu wypełnianie tablicy pom, za pomocą tablicy tab - wszystko ok
sort(pom); //sortowanie tablicy pom
//dopisywanie do stringGrida
generatedGrid.Cells[0, stat]:=intToStr(stat);
generatedGrid.Cells[1, stat]:=generatedLabel.Caption;
if stat<generateCountSpin.Value then
generatedGrid.RowCount:=generatedGrid.RowCount+1;
generatedCountLabel.Caption:=intToStr(generatedGrid.RowCount-1);
application.ProcessMessages;
//to dopisywanie działa ok
//idzie do tablicy generated
for i:=1 to 6 do
generated[stat, i]:=pom[i];
pom:=nil;
end; //for stat
tab:=nil;
Najczęściej AccessViolation pojawia się na samym początku, przy zwiększaniu rozmiarów tablicy generated.
Raz się pojawił gdzieś pod koniec przy uzupełnianiu tablicy generated lub pom:=nil, lub tab:=nil.
Opatrzyłem tą całość w blok try..except. No i jest tak, że za pierwszym razem wykonania tego kodu jest ok. Czasami za drugim też. Ale potem jest już błąd.
Poza tym, gdy zamykam program mam runtime 216. Co to jest?
I czemu wychodzi mi te Access Violation? Jak na moje oko, wszystko powinno być ok. Jak myślicie?