Guten Morgen,
Ich habe ein kleines Problem mit einem Dynamischen Array.
Ich habe eine Prozedur welche Werte Prüfen soll und diese dann in das "fehlerbehaftete" Array reinschreiben soll das ganze ist 2 Dimensional
damit ich einem Wert mehrere Werte zuordnen kann.Jetzt bekomme ich aber nachdem b=5 wurde folgende Fehlermeldung:
"Im Projekt.exe ist eine
Exception der Klasse EAccessViolation aufgetreten:"Zugriffsverletzung bei Adresse 00401C2D in Modul 'Projekt.exe'.Schreiben von Adresse 00000001."
Habe mit dem Debugger die Länge des Array Schritt für Schritt nachgeprüft es wir genau immer um 1 verlängert und dann erst der Wert hineingeschrieben.
Code:
var
KandidatenListen : array of array of Byte;
.
procedure Tform1.KandidatenListe();
var
x,y,a,b,za :integer;
begin
a := 0;
for x:= 1 to 9 do begin
for y:= 1 to 9 do begin
if (Sudoku[x,y]=0) then begin
b:=0;
a := a+1;
b := 1;
for za:=1 to 9 do begin
zahl := za;
If (Einheit_Pruefen(x,y)) and (Wagerecht_Pruefen(x)) and (Senkrecht_Pruefen(y)) then begin
SetLength(KandidatenListen,(a));
SetLength(KandidatenListen[(a-1)],b);
KandidatenListen[(a-1),b]:= za; //Hier wirft es mich mit der Fehlermeldung raus.Wenn B=5 ist.
Korx[a]:= x;
Kory[a]:= y;
Memo1.Lines.Add('['+(IntToStr(a-1))+','+IntToStr(b)+']'+'='+IntToStr(KandidatenListen[(a-1),b]));
b:= b+1;
end;
end;
end;
end;
end;
end;