Mal ein Beispiel. In der Prozedur Button1Click rufe ich in einer Schleife eine Funktion mehrmals auf. Die kann False oder True zurückgeben. Bei der Gelegenheit will ich ermitteln ob der Rückgabewert mindestens einmal True war. Nach meiner Logik kann ich das mit
b := b or Test(i);
machen. Wenn mindestens einmal True zurückkommt, ist b auch True.
Das Problem ist, dass wenn b True ist, wird die Funktion nicht weiter aufgerufen. Warum?
Delphi-Quellcode:
function Test(i: Integer): Boolean;
begin
ShowMessage('Zahl ist: ' + IntToStr(i));
Result := (i mod 2) = 0; //Einfach etwas sinnloses, hauptsache gelegentlich True
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
b: Boolean;
begin
b := False;
for i := 0 to 8 do
b := b or Test(i);
ShowMessage(BoolToStr(b));
end;