Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Inc ( i ) Problemchen (https://www.delphipraxis.net/158448-inc-i-problemchen.html)

thomas2009 18. Feb 2011 00:15

Inc ( i ) Problemchen
 
Hi

mein Code sucht zwar nach dem String in allen Zeilen aber er findet nur ein String Maximum in eine Zeile.

Wenn er ein String in eine Zeile findet, dann springt automatisch in die nächste Zeile

Also ich mus Inc(i) irgendwo einsetzen, damit meine Code nach dem String in die ganz Zeile merfach sucht

hier ist mein Code
Delphi-Quellcode:
var
          i,s: Integer;
begin
ListBox2.Clear; // alle Strings-Pos hier anzeigen
          for i:=0 to Richedit1.Count-1 do begin
              s := Pos(UpperCase(Edit1.Text),UpperCase(Richedit1.Lines[i]));
              if s <> 0 then
                 ListBox2.Items.Add(Format('%d,%d',[i+1,s]));
// ... nun soll der Code in die selbe Zeile weiter suchen und nicht in die nächste Zeile
          end;

end;

Luckie 18. Feb 2011 01:00

AW: Inc ( i ) Problemchen
 
Delphi-Referenz durchsuchenPosEx sollte dein Problem lösen.

hoika 18. Feb 2011 06:13

AW: Inc ( i ) Problemchen
 
Hallo,

oder eine andere Schleife nehmen,
z.B. while.


Heiko

himitsu 18. Feb 2011 06:56

AW: Inc ( i ) Problemchen
 
Oder mit For durch die Stringlistzeilen und mit While oder Repeat-Until durch die Zeile.
PosEx wird so oder so benötigt.

thomas2009 18. Feb 2011 21:34

AW: Inc ( i ) Problemchen
 
kann jemand einen Vorschlag mit repeat, while oder PosEx schreiben?

Matze 19. Feb 2011 07:49

AW: Inc ( i ) Problemchen
 
Das ist nicht schwer, daher als Hinweis:
Delphi-Referenz durchsuchenPos liefert dir die Position im String, an der dein Suchstring gefunden wurde. Delphi-Referenz durchsuchenPosEx macht genau das gleiche, nur kannst du hier zusätzlich im 3. Parameter angeben, ab welcher Position gesucht werden soll.
Diesen Parameter setzt du folglich auf "PosEx + 1" und schon wird im String weiter gesucht.

Der Kopf deiner While-Schleife könnte grob wie folgt aussehen:
Delphi-Quellcode:
AktuellePos := 1;
while (PosEx(UpperCase(Edit1.Text), UpperCase(Richedit1.Text), AktuellePos) > 0)
begin
  AktuellePos := ...;
end;
Das als Hilfestellung.

thomas2009 19. Feb 2011 14:42

AW: Inc ( i ) Problemchen
 
OK, ich möchte "repeat" verwenden
Delphi-Quellcode:
var
          i,s: Integer;
begin
ListBox2.Clear; // alle Strings-Pos hier anzeigen
          for i:=0 to Richedit1.Count-1 do begin
              s := Pos(UpperCase(Edit1.Text),UpperCase(Richedit1.Lines[i]));
              if s <> 0 then
                 ListBox2.Items.Add(Format('%d,%d',[i+1,s]));
// ... nun soll der Code in die selbe Zeile weiter suchen und nicht in die nächste Zeile
repeat
               if i < Length(Richedit1.Lines[i]) then
// ... was kommt noch ?
               

          end;


end;

Luckie 19. Feb 2011 15:12

AW: Inc ( i ) Problemchen
 
Ist es so schwer in der Hilfe oder in Tutorials mal zu gucken, wie eine repeat-Schleife aussieht?


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 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