@Jumpy
Ich glaube nicht, dass da der Fehler liegt. Ich hatte das (um ehrlich zu sein) bei mir nichtmal in der
Unit drin. Weiß nicht, wo das bei dir hergekommen ist. Braucht man ja eigentlich auch nicht, oder?
Ich hab gerade überlegt, ob es möglicherweise woanders dran liegen könnte: Wenn jetzt ein Teilsudoku erstellt wird, bei dem ab einer bestimmten Stelle einfach keine Lösung mehr möglich ist, dann bricht der ja nicht ab. Vlt müsste man da was einstellen, dass wenn die Funktion false zurückliefert man die nochmal von vorne aufruft...
Ich komm auch mit dem Teil noch nicht ganz klar:
Delphi-Quellcode:
while ValidDecision.Count > 0 do
begin
dig:=ValidDecision[random(ValidDecision.Count)];
if DigitIsOk(i,StrToInt(dig)) then
begin
Form1.Map.Cells[X,Y]:=dig;
if SetCell(i + 1) then // müsste hier nicht noch ein else-Zweig rein?
begin
Result:=True;
Exit;
end;
end
else
ValidDecision.Delete(ValidDecision.IndexOf(dig));
end;
Bei dem Kommentar, müsste da nicht noch ein else-Zweig rein, was passiert, wenn die Funktion false zurückgibt? Denn wenn sie das tut, wird darauf
imho nicht reagiert...
LG, hans ditter