Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#16

Re: Unterschied zw. Repeat Until u. While do

  Alt 4. Nov 2007, 00:37
Das eine ist eine Kopf-Abfrage, das andere eine Fuß-Abfrage.

Bei einer Kopf-Abfrage wird zuerst gefragt ob der in der Schleife befindliche Code ausgeführt werden soll.

Die Fuß-Abfrage wird genommen wenn der Code in der Schleife auf jeden Fall mindestens einmal ausgeführt werden soll.

Hier ein Beispiel für Fuß-Abfrage (ungeprüft):

Delphi-Quellcode:
var
  s, s2: String;
begin
  s := 'erster zweiter dritter vierter letzter'; // Beispiel mit Text
  //s := ''; // Beispiel für leer

  repeat

    s := Trim(s);

    if Pos(' ', s) > 0 then
      begin
        s2 := Copy(s, 1, Pos(' ', s));
        Delete(s, 1, Pos(' ', s))
      end
    else
      begin
        s2 := s;
        Delete(s, 1, Length(s))
      end;

    if s2 <> 'then
      ShowMessage(s2)
    else
      ShowMessage('String ist leer');

  until Length(s) = 0;
end;
Wenn s Text enthält werden alle Wörter einzeln angezeigt. Ist s leer, bekommt man den Hinweis, das s leer ist.

Fußabfragen werden meiner Kenntnis nach seltener genommen, da der Code zumindest einmal durchlaufen werden muß, und das muß erst nötig sein. Bei Kopfschleifen weiß man vorher auf was man sich einläßt.
  Mit Zitat antworten Zitat