Entweder vor der schleife das Result auf True setzt.
Sonst überschreibst du ständig den letzen Fund, außer es ist zufällig letzte Zahl der Spalte.
Oder du brichst die Schleife mit
Break; ab, nachdem dort False gesetzt wurde.
Hierbei ebenfalls vorher auf True setzen (einmal reicht ja).
Oder mit
Exit; die Funktion abbrechen und, falls die Schleife komplett durchlaufen werden konnte (also nix gefunden), dann nachher auf True setzen.
Delphi-Quellcode:
function DigitIsOK(X,Y,Size,Digit: integer):boolean;
var
i: Integer;
begin
if not(Digit = 0) then
begin
Result:=True;
for i := 0 to Size do
if (Digit = StrToInt(Form1.Map.Cells[X,i]))
or (Digit = StrToInt(Form1.Map.Cells[i,Y])) then
Result:=False;
end
else
Result:=false;
end;
Die Verwendung von Form1. gibt schonmal einen deutlichen Hinweis darauf, daß diese Funktion besser zu einer Methode der Form gemacht werden sollte.