Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   for- Schleife : Anfangsvariable aktualisieren (https://www.delphipraxis.net/137215-schleife-anfangsvariable-aktualisieren.html)

aaaaaaaaaa_10 16. Jul 2009 09:43


for- Schleife : Anfangsvariable aktualisieren
 
Delphi-Quellcode:
    k := 10;
    for j := k to Length(head) do
     begin
       ...
      k := k + 5;
     end;
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?

mkinzler 16. Jul 2009 09:44

Re: for- Schleife : Anfangsvariable aktualisieren
 
Statt For- eine While- oder Repeat-Schleife verwenden oder ein
Delphi-Quellcode:
break;
( weniger Schön)

aaaaaaaaaa_10 16. Jul 2009 09:47

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.

mkinzler 16. Jul 2009 09:49

Re: for- Schleife : Anfangsvariable aktualisieren
 
Man sollte eine Laufvariable nicht verändern!

aaaaaaaaaa_10 16. Jul 2009 09:55

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

mkinzler 16. Jul 2009 09:56

Re: for- Schleife : Anfangsvariable aktualisieren
 
Verwende Pos()/PosEx() um gezielt zu suchen

aaaaaaaaaa_10 16. Jul 2009 09:57

Re: for- Schleife : Anfangsvariable aktualisieren
 
Delphi-Quellcode:
 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;
Dat tue ich bereits

mkinzler 16. Jul 2009 09:58

Re: for- Schleife : Anfangsvariable aktualisieren
 
Zu was brauchst du dann die Schleife?

aaaaaaaaaa_10 16. Jul 2009 10:01

Re: for- Schleife : Anfangsvariable aktualisieren
 
Ohne Schleife würde er doch nur das erste vorkommen von #9 und '[' erkennen und den rest nicht

Stormy 16. Jul 2009 10:02

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:
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);
Edit: Der Post bezieht sich auf dene Frage bei #3


Gruß
Stormy

Kalfany 16. Jul 2009 10:05

Re: for- Schleife : Anfangsvariable aktualisieren
 
Zitat:

Zitat von mkinzler
Man sollte eine Laufvariable nicht verändern!

Nicht nur das, je nach Schleifen-Typ funktioniert das auch gar nicht

mkinzler 16. Jul 2009 10:06

Re: for- Schleife : Anfangsvariable aktualisieren
 
Bei PosEx() kann man doch den Start-Index setzen

Neutral General 16. Jul 2009 10:10

Re: for- Schleife : Anfangsvariable aktualisieren
 
Zitat:

Zitat von Kalfany
Zitat:

Zitat von mkinzler
Man sollte eine Laufvariable nicht verändern!

Nicht nur das, je nach Schleifen-Typ funktioniert das auch gar nicht

Mit Pointern gehts ;) :twisted:

Stormy 16. Jul 2009 10:16

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;

aaaaaaaaaa_10 16. Jul 2009 10:25

Re: for- Schleife : Anfangsvariable aktualisieren
 
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;
Hab es jetzt so. Funktionier auch,aber bei den else sagt er, dass EXCEPT oder FINALLY erwartet ?

Stormy 16. Jul 2009 10:29

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;

aaaaaaaaaa_10 16. Jul 2009 10:30

Re: for- Schleife : Anfangsvariable aktualisieren
 
:wall: ja, klar.. wird zeit dass mittag ist

Neutral General 16. Jul 2009 10:32

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:
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;
Gruß
Neutral General

Draos 16. Jul 2009 10:37

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);

aaaaaaaaaa_10 16. Jul 2009 10:54

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