Step 12 - while

❤️ Dein Beitrag für delphi-lernen.de: Das Projekt unterstützen

Offenburg, den 13. November 2025

Liebe Leserin, lieber Leser, liebe Delphi-Community,

die Inhalte von delphi-lernen.de stehen Ihnen seit 2006 kostenlos zur Verfügung. Über die Jahre sind dabei nicht nur unzählige Stunden Arbeit, sondern auch Kosten von über 4.500 Euro (allein für das Hosting) aufgelaufen. Wenn Dir diese Seite geholfen hat und Du die Arbeit wertschätzt, freue ich mich riesig über eine kleine oder große Spende, um die weiteren laufenden Kosten zu decken und die Zukunft des Projekts zu sichern.



Gerne biete ich Dir / Euch auch eine persönliche Beratung oder Schulung auf Grundlage meiner nun jahrzehntelangen Erfahrung, unter anderem als Software-Entwickler, Projektmanager und Lösungen-Entwickler an. Details und Verfügbarkeit klären wir gerne persönlich.

Kontaktaufnahme bitte über LinkedIn - hier stehen auch viel mehr Informationen: Mein LinkedIn-Profil.



Herzliche Grüße
Marco Hetzel


Programmsteuerung 4: Die "while"-Schleife

Eine while-Schleife wiederholt alle Befehlszeilen zwischen begin und end so lange, bis die Bedingung false ist. Es wird dabei zuerst nach der Bedingung gefragt und dann erst, insofern diese wahr ist, die Anweisungen bearbeitet. Daher wird diese Schleife auch als "abweisende Schleife" bezeichnet.
Die Struktur:
  while Bedingung do
  begin
    // Anweisungen
  end;
  // (ent)sprechend: während irgendwas wahr ist mache irgendwas

  // Wann endet diese Schleife?
  while true do
  begin
     // Anweisungen
  end;
 
Kleines Beispiel zum Dividieren mit unbestimmten Zahlen, aber mit einem Ergebnis in Ganzzahlen und mit Rest: Vorausgesetzt sind hier die Variablen divident:Real, divisor:Real, ergebnis:Integer. Wer möchte, kann die Variablentypen nochmals bei Step 04 nachlesen, also was "Real" genau für Werte haben kann.
var
  dividend,
  divisor,
  ergebnis : Integer;
begin  
  //  ...
  while (dividend = divisor) or  (dividend > divisor) do
  begin
    dividend := dividend - divisor;
    ergebnis := ergebnis + 1;
  end;
  ShowMessage('Lösung: '+ (IntToStr(ergebnis)) + 'Lösung: '' Rest: '+(FloatToStr(dividend)));
end;
Dieses Beispiel ist hier nur sehr kurz aufgelistet. Die "Vollversion" findest du gerne unter GitHub.
Viel Spaß ;)
 
Es ist wichtig, die while-Schleife genau von der if-Anweisung zu trennen. In meinem Kurs früher habe ich viele Schüler gehabt, die damit erstmal eine Schwierigkeit hatten, da der Aufbau sehr ähnlich ist und es wirklich aufs Detail ankommt. Ich darf mich beim Implementieren fragen, möchte ich die Ausführung nur einmal haben (dann nehme ich "if" - "wenn") oder soll es so lange wiederholt werden, bis meine Bedingung "false" ist. Beim letzteren Gedanken gehört auch dazu, dass ich mir überlege, ob es denn "false" werden kann. Andernfalls habe ich eine sogenannte "Endlosschleife" programmiert, die ggf. das Programm zum "hängen" oder sogar zum Absturz bringen kann.