Mal wieder ein Hallöchen von mir :)
Wie ihr euch sicherlich denkt, hab ich ein Problem :)
Und zwar folgendes:
Ich starte meinen Lösungsvorgang über einen Button, der dann verschiedene Aktionen duchführt und eine procedure triggert.
In dieser ist eine while Schleife, welche jedoch immer wieder aufgerufen wird nachdem mein Programm eigentlich fertig sein sollte.
Ich hab es schon mit exit und application.ProcessMessages versucht, jedoch keinen Erfolg gehabt. Es scheint fast so als würde er über den Punkt rüber zur letzten Schleife gehen die er findet.
Ich versuche mal wichtigen Quellcode zu posten, wenn was fehlen sollte müsstet ihr mir bescheid sagen.
Delphi-Quellcode:
procedure TForm1.BackTracking(var Nr,INr :integer);
begin
While Nr <> 82 do
begin
ZahlZuKoordinaten(Nr);
b := xKoo-1;
c := yKoo;
if Nr >= 82 then
break;
if INr = 9 then
begin
Nr := Nr-1;
INr := Positionsarray[Nr-1,0]+1;
sudokuarray[b,c] := 0;
Backtracking(Nr,INr);
end;
if Moeglichkeitenarray [Nr-1,INr] = 0 then
begin
if INr = 0 then
begin
if richtung = 0 then
begin
Nr := Nr-1;
INr := positionsarray[Nr-1,0]+1;
richtung := 0;
BackTracking(Nr,INr)
end
else
begin
Nr := Nr+1;
INr := 0;
richtung := 1;
Backtracking(Nr,INr);
end;
end;
begin
if Moeglichkeitenarray[Nr-1,0] <> 0 then
sudokuarray[b,c] := 0;
Nr := Nr-1;
INr := (Positionsarray[Nr-1,0])+1;
Richtung := 0;
Backtracking(Nr,INr);
end;
end;
If Moeglichkeitenarray [Nr-1,INr] <> 0 then
begin
sudokuarray[b,c] := Moeglichkeitenarray[Nr-1,INr];
d := Moeglichkeitenarray[Nr-1,INr];
Reihe(b,c);
if e = 1 then
Spalte(b,c);
if e = 1 then
Kasten(b,c);
if e = 1 then
begin
Positionsarray[Nr-1,0] := INr;
Nr := Nr+1;
INr := 0;
Richtung := 1;
BackTracking(Nr,INr);
end;
if e <> 1 then
begin
if INr <> 8 then
begin
INr := INr + 1;
BackTracking(Nr,INr);
end
else
begin
Richtung := 0;
Nr := Nr-1;
INr := (Positionsarray[Nr-1,0])+1;
sudokuarray[b,c] := 0;
Backtracking(Nr,INr);
end;
end;
end;
end;
Application.ProcessMessages;
Uebertragen();
end;
end.
So far...^^