Thema: Delphi Continue + Repeat-Until

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

Continue + Repeat-Until

  Alt 3. Apr 2009, 13: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;
$2B or not $2B
  Mit Zitat antworten Zitat