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;