Einzelnen Beitrag anzeigen

Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#11

Re: Verständnissproblem bei Schleife

  Alt 26. Mär 2009, 21:21
Continue ist ja nicht das Gegenteil von Break. Coninue ist im Grunde auch ein Break, aber nur für den Rest der Schleife ohne die Schleife als ganzes abzubrechen... oder?
Delphi-Quellcode:
procedure TForm1.ButtonSaufAbendClick(Sender: TObject);
const
  BierImKasten = 24;
  VertraegtBier = 6;

  function WeiterSaufen( NachWievielBier : Integer) : Boolean;
  var
    Msg : String;
  begin
    Msg := Format('Willst Du nach %d Flaschen Bier weitersaufen?',[NachWievielBier]);
    Result := MessageDlg(Msg,mtConfirmation,[mbYes,mbNo],0)=idYes;
  end;

  function KastenLeer(BierVerbraucht: Integer) : Boolean;
  begin
    Result := BierVerbraucht = BierImKasten;
  end;

var
  Bier, Leergut, Uebergeben, BierGekippt, BierIntus : Integer;
  Msg : String;
begin
  BierGekippt := 0;
  BierIntus := 0;
  Leergut := 0;

  // Diese Schleife wird mit continue und break gesteuert
  for Bier := 1 to BierImKasten do begin

    BierGekippt := BierGekippt +1;
    Leergut := Leergut +1;

    if not KastenLeer(BierGekippt) and Weitersaufen(Bier) then Continue;

    Uebergeben := BierGekippt div VertraegtBier;
    BierIntus := BierGekippt mod VertraegtBier;

    Break;
  end;

  Msg := 'Du hast noch %d Flaschen Bier im Kasten'#13+
         'Du hast Dich %d x Übergeben.'#13+
         'Du hast jetzt noch %d Flaschen Bier intus.';
  ShowMessage(Format(Msg,[BierImKasten - Leergut, Uebergeben, BierIntus]));
end;
Ok, das Beispiel wurde etwas zu umfangreich um noch als verständliches Beispiel durchzugehen
  Mit Zitat antworten Zitat