Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#1

Wieso funktioniert diese boolsche Schleife nicht?

  Alt 4. Apr 2015, 23:22
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;
  Mit Zitat antworten Zitat