AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Continue + Repeat-Until

Ein Thema von himitsu · begonnen am 3. Apr 2009 · letzter Beitrag vom 3. Apr 2009
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.342 Beiträge
 
Delphi 12 Athens
 
#1

Continue + Repeat-Until

  Alt 3. Apr 2009, 12:59
Ich dachte ja bisher Continue springt zum Anfang der Schleifen?

Also bei For und While ist es ja so (oder scheint so, da es vom Ende eh immer zum Anfang geht), aber mir scheint es grad so, als wenn bei Repeat zum Ende gesprungen wird?

Problem:
ich hab soeine Schleife ... und wollte mir damit sozusagen ein GOTO ersparen (weil es ja alle hassen)
Delphi-Quellcode:
Repeat
  ...
  if ... then Continue;
  ...
Until True;
nur springt Delphi bei Continue aus der Schleife raus (halt wie bei Break), anstatt sie zu wiederholen o.O


hab ich da nun falsch gedach, oder geht hier was nicht richtig? (D2009 ... werd's dann daheim nochmal in was älterem Versuchen)


[add]
im aktuellen Fall könnt ich, statt Continue, auch einfach die Funktion auch einfach rekursiv sich selber aufrufen lassen, aber dann nehm ich lieber ein knuffiges Goto
Delphi-Quellcode:
Class Function TXMLNodeList.ParseNodePath(Var Nodes: TXMLNodeList; Var NodeName: TWideString; PathOptions: TMXLNodePathOptions): Boolean;
  Var S: TWideString;
    i, i2: Integer;
    Node: TXMLNode;

  Begin
    Repeat
      i := Pos('\', NodeName);
      i2 := Pos('/', NodeName);
      If (i2 > 0) and (i2 < i) Then i := i2;
      If i > 0 Then Begin
        S := Copy(NodeName, 1, i - 1);
        System.Delete(NodeName, 1, i);
        If S = '..Then Begin
          If Assigned(Nodes) and Assigned(Nodes.Parent) Then
            Nodes := Nodes.Parent.ParentList Else Nodes := nil;
        End Else If S <> '.Then
          If xpNotCreate in PathOptions Then Begin
            If xpNonFilered in PathOptions Then Begin
              If Nodes.IndexOfNF(S) < 0 Then Node := nil Else Node := Nodes.NodeNF[S];
            End Else
              If Nodes.IndexOf(S) < 0 Then Node := nil Else Node := Nodes.Node[S];
            If Assigned(Node) Then Nodes := Node.Nodes Else Nodes := nil;
          End Else If xpDoCreate in PathOptions Then Begin
            If xpNonFilered in PathOptions Then Node := Nodes.NodeNF[S] Else Node := Nodes.Node[S];
            If Assigned(Node) Then Nodes := Node.Nodes Else Nodes := Nodes.Add(S).Nodes;
          End Else Begin
            If xpNonFilered in PathOptions Then Node := Nodes.NodeNF[S] Else Node := Nodes.Node[S];
            If Assigned(Node) Then Nodes := Node.Nodes Else Nodes := nil;
           End;
        Continue;
      End;
    Until True;
    Result := Assigned(Nodes);
  End;
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz