Delphi-PRAXiS
Seite 5 von 6   « Erste     345 6      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi string durchsuchen und tipps zu while + for-schleifen (https://www.delphipraxis.net/141239-string-durchsuchen-und-tipps-zu-while-schleifen.html)

Matze 5. Okt 2009 20:17

Re: [GELÖST] string durchsuchen
 
Dann mach es, dafür ist die While-Schleife schließlich da.

DeddyH 5. Okt 2009 20:21

Re: [GELÖST] string durchsuchen
 
Kommt aber im Endeffekt auf dasselbe raus ;)

[edit] Trotzdem mal nen Beispiel für continue:
Delphi-Quellcode:
for i := 0 to 10 do
  begin
    if Odd(i) then
      continue;
    ShowMessage(IntToStr(i) + ' ist eine gerade Zahl.');
  end;
[/edit]

mkinzler 5. Okt 2009 20:27

Re: [GELÖST] string durchsuchen
 
Da wäre aber not eleganter

DeddyH 5. Okt 2009 20:33

Re: [GELÖST] string durchsuchen
 
Darum ging es aber nicht, ich hab mir doch nur schnell ein Beispiel aus den Fingern gesogen.

mkinzler 5. Okt 2009 20:37

Re: [GELÖST] string durchsuchen
 
Die meisten ( fast alle) continues kann man umgehen

DeddyH 5. Okt 2009 20:41

Re: [GELÖST] string durchsuchen
 
Dasselbe gilt auch für break und exit, aber das war nicht das Thema.

[edit] Ich habe mir das noch einmal durchgelesen:
Zitat:

Zitat von delphi-n
aber wie mache ich das, wenn ich wie bei "while" eine "solange"-schleife einbauen will?



Also wenn er "solange" findet (soll so ne art mini-programmier-sprache werden: solange xxx tue ...*solange),
soll er prüfen, ob das was dahinter steht wahr ist (klar) und dann weiter machen und wieder zurückspringen (alles soweit klar).

wenn aber es nicht wahr ist, muss er ja zum nächsten *solange gehen, ohne die for schleife neu zu beginnen, da das darin dann ja nicht ausgeführt werden soll.

Ich dachte erst daran, das "i:=i+1;" hinter die solange-abfrage zu setzten und zu suchen, also den
"else if StringEnthalten('xxx', RichEdit1.Lines[i]) then xxx"-Block nicht zu verlassen.

Aber i:=i+1; geht bei for ja nicht...

und muss nachträglich zugeben, dass ich es nicht verstanden habe. Genau genommen verstehe ich es immer noch nicht :lol:. Soll die Schleife verlassen werden, wenn eine oder mehrere Bedingungen nicht mehr zutrifft/zutreffen? :gruebel: [/edit]

delphi-n 5. Okt 2009 21:16

Re: [GELÖST] string durchsuchen
 
es soll sozusagen eine while-schleife ("solange") aus dem richedit ausgelesen werden.


P.S. diese zeile (neu) ruft den fehler "listenindex überschreitet das maximum" hervor:

Delphi-Quellcode:
  i:=strtoint(ListBox1.Items[ListBox1.Items.Count]);

DeddyH 5. Okt 2009 21:19

Re: [GELÖST] string durchsuchen
 
OK, aber solange was?

delphi-n 5. Okt 2009 21:20

Re: [GELÖST] string durchsuchen
 
so soll es aussehen:

solange nichtistwand (tue) <-- tue lasse ich weg, da es unnütig ist; nichtistwand kann man durch abfragen der koordianten posx und posy(variablen) erreichen

schritt

*solange

DeddyH 5. Okt 2009 21:32

Re: [GELÖST] string durchsuchen
 
Gut, in diesem Fall ist eine while-Schleife wahrscheinlich zielführender. Das könntest Du dann so schreiben:
Delphi-Quellcode:
i := 0;
while (i < RichEdit.Lines.Count) and (AndereBedingung) do
  begin
    //irgendwas mit der aktuellen Richedit-Zeile machen
    inc(i);
  end;
Und der Fehler rührt daher, dass TStrings 0-basierend ist, d.h. die erste Zeile hat den Index 0, die letzte Zeile demzufolge Count - 1. Ein Zugriff auf Lines[Count] greift deshalb unweigerlich in einen unzulässigen Bereich.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:49 Uhr.
Seite 5 von 6   « Erste     345 6      

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