![]() |
for- Schleife : Anfangsvariable aktualisieren
Delphi-Quellcode:
Wie kann ich verhindern, dass j ab 10 alle Werte durchläuft. Ich möchte, wenn ein bestimmtes Ereignis eintritt erst bei z.b. j = 6 weiter machen und 2-5 auslassen. Ist das irgendwie möglich?
k := 10;
for j := k to Length(head) do begin ... k := k + 5; end; |
Re: for- Schleife : Anfangsvariable aktualisieren
Statt For- eine While- oder Repeat-Schleife verwenden oder ein
Delphi-Quellcode:
( weniger Schön)
break;
|
Re: for- Schleife : Anfangsvariable aktualisieren
Es geht darum, dass ich einen String durchlaufen möchte und immer wenn an einer stelle etwas bestimmtes gefunden wurde, erst ab der drittnächsten weitergesucht werden soll.
|
Re: for- Schleife : Anfangsvariable aktualisieren
Man sollte eine Laufvariable nicht verändern!
|
Re: for- Schleife : Anfangsvariable aktualisieren
Aber wie realisiere ich es denn? Ich fange vorne im String an. Dann suche ich das erste #9 und das darauf folgende '[', kopiere das, was dazwischen steht in eine stringvariable und wollte ab der Stelle wo '[' auftrat +1 weitermachen
|
Re: for- Schleife : Anfangsvariable aktualisieren
Verwende Pos()/PosEx() um gezielt zu suchen
|
Re: for- Schleife : Anfangsvariable aktualisieren
Delphi-Quellcode:
Dat tue ich bereits
for j := 10 to Length(head) do
begin TabPos1 := posEx(#9,head,j); if TabPos1 <> 0 then begin TabPos2 := posEx('[',head,TabPos1+1); ShowMessage(IntToStr(TabPos2)); if TabPos2 <> 0 then begin Length1 := TabPos2-TabPos1; MWBeztemp := Copy(head, TabPos1,Length1); MWBez := MWBez+#9+MWBeztemp; end; end; end; |
Re: for- Schleife : Anfangsvariable aktualisieren
Zu was brauchst du dann die Schleife?
|
Re: for- Schleife : Anfangsvariable aktualisieren
Ohne Schleife würde er doch nur das erste vorkommen von #9 und '[' erkennen und den rest nicht
|
Re: for- Schleife : Anfangsvariable aktualisieren
Öhm wo ist das Problem?
Setze doch eine Variable die sobald dein String gefunden wurde auf 3 gesetzt wird und am anfang der For-Schleife einen If-Block der das abfragt.
Delphi-Quellcode:
Edit: Der Post bezieht sich auf dene Frage bei #3
k := 10;
x := 0; for j := k to Length(head) do if x = 0 then begin ... k := k + 5; if head = 'ab hier übersrpinge die nächsten 3 strings' then x := 4; end else dec(x); Gruß Stormy |
Re: for- Schleife : Anfangsvariable aktualisieren
Zitat:
|
Re: for- Schleife : Anfangsvariable aktualisieren
Bei PosEx() kann man doch den Start-Index setzen
|
Re: for- Schleife : Anfangsvariable aktualisieren
Zitat:
|
Re: for- Schleife : Anfangsvariable aktualisieren
Mal so auf die SChnelle und ungetestet versuch es mal so:
Delphi-Quellcode:
j := 10;
repeat TabPos1 := posEx(#9,head,j); if TabPos1 <> 0 then begin TabPos2 := posEx('[',head,TabPos1+1); //ShowMessage(IntToStr(TabPos2)); if TabPos2 <> 0 then begin j := TabPos2; Length1 := TabPos2-TabPos1; MWBeztemp := Copy(head, TabPos1,Length1); MWBez := MWBez+#9+MWBeztemp; end else j := -1; end else j := -1; until j = -1; |
Re: for- Schleife : Anfangsvariable aktualisieren
Delphi-Quellcode:
Hab es jetzt so. Funktionier auch,aber bei den else sagt er, dass EXCEPT oder FINALLY erwartet ?
k := 10;
while k <= Length(head) do begin TabPos1 := posEx(#9,head,k); if TabPos1 <> 0 then begin TabPos2 := posEx('[',head,TabPos1+1); if TabPos2 <> 0 then begin Length1 := TabPos2-TabPos1; MWBeztemp := Copy(head, TabPos1,Length1); MWBez := MWBez+#9+MWBeztemp; k := TabPos2+1; end; end else begin !!!!!! end; end else begin !!!!!!!! end; |
Re: for- Schleife : Anfangsvariable aktualisieren
Hast du evl. ein end falsch gesetzt oder irgendwo ein Try stehen??
Versuch es mal so:
Delphi-Quellcode:
k := 10;
while k <= Length(head) do begin TabPos1 := posEx(#9,head,k); if TabPos1 <> 0 then begin TabPos2 := posEx('[',head,TabPos1+1); if TabPos2 <> 0 then begin Length1 := TabPos2-TabPos1; MWBeztemp := Copy(head, TabPos1,Length1); MWBez := MWBez+#9+MWBeztemp; k := TabPos2+1; //end; end else begin !!!!!! end; end else begin !!!!!!!! end; end; |
Re: for- Schleife : Anfangsvariable aktualisieren
:wall: ja, klar.. wird zeit dass mittag ist
|
Re: for- Schleife : Anfangsvariable aktualisieren
Hi,
PS: Wenn du den else-Block nicht brauchst, musst du ihn auch nicht hinschreiben ;) Du kannst das ganze so schreiben:
Delphi-Quellcode:
Gruß
while k <= Length(head) do
begin TabPos1 := posEx(#9,head,k); if TabPos1 <> 0 then begin TabPos2 := posEx('[',head,TabPos1+1); if TabPos2 <> 0 then begin Length1 := TabPos2-TabPos1; MWBeztemp := Copy(head, TabPos1,Length1); MWBez := MWBez+#9+MWBeztemp; k := TabPos2+1; end; end; end; Neutral General |
Re: for- Schleife : Anfangsvariable aktualisieren
Delphi-Quellcode:
i:=10;
while i<=Length(Head) do if Irgendwas then begin ... Inc(i,5); end else Inc(i); |
Re: for- Schleife : Anfangsvariable aktualisieren
@Neurtral General: ich brauch den else block, hab ihn nur noch nicht "bestückt" :wink:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:54 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