Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi In einem Text weitersuchen (https://www.delphipraxis.net/95796-einem-text-weitersuchen.html)

Ajin 13. Jul 2007 10:16


In einem Text weitersuchen
 
Hallo DP!

Ich habe einen Text den ich nach einem bestimmten string durchsuche. Das durchsuchen klappt auch einwandfrei. Hier der Text und meine Funktion dazu:

TEXT:
Ich habe eine tomate=827382932 gesehen und die ist verwandt mit tomate=928382832 aber nicht verwandt mit tomate=928382823 was soll nur aus tomate=828372732 werden?

FUNKTION:
Delphi-Quellcode:
function get_tomatenID:integer;
var
i, pos_tomate, k:integer;
sl:Tstrings;
str:String;
Number:Cardinal;
Begin
 //Stringlist
 sl:=TStringlist.create;
 try
  sl.Add(Form1.memo1.Text);
  //alles durchsuchen
  for i := 0 to sl.Count - 1 do
  begin
  //--->> Position des gewünschten strings suchen
   str:='tomate=';
   pos_tomate := pos(str, sl.Strings[i]);

   if pos_tomate <> 0 then
  begin
   //Gefunden!

   str := Copy(sl.Strings[i],pos_tomate+7, 9);
   Val (str, Number, k);
   result := Number;
  end;
 end;
 finally
  sl.Free;
 end;
End;
Somit bekomm ich die erste Tomaten ID heraus. Nun dachte ich an eine Erweiterung... Ich möchte alle Tomaten IDs in einer Listbox untereinander speichern. Dazu muss ich nach dem 1. gefundenen (und dann auch gespeicherten) Element das nächste Suchen bis EOF
Das könnte auch eine Prozedur lösen.


PROZEDUR:
Delphi-Quellcode:
procedure get_tomatenID:integer;
var
i, pos_tomate, k:integer;
sl:Tstrings;
str:String;
Number:Cardinal;
Begin
 //Stringlist
 sl:=TStringlist.create;
 try
  sl.Add(Form1.memo1.Text);
  //alles durchsuchen
  for i := 0 to sl.Count - 1 do
  begin
  //--->> Position des gewünschten strings suchen
   str:='tomate=';
   pos_tomate := pos(str, sl.Strings[i]);

   if pos_tomate <> 0 then
    begin
   
    //1. Wert Gefunden!
    str := Copy(sl.Strings[i],pos_tomate+7, 9);
    Val (str, Number, k);
    Listbox1.items.add(Number);
    [i]Jetzt irgendwie weitersuchen -_-[/i]

  end;
 end;
 finally
  sl.Free;
 end;
End;
WIe kann ich ab der stelle weitersuchen lassen bis EOF?

Dunkel 13. Jul 2007 10:21

Re: In einem Text weitersuchen
 
Schau Dir mal
Delphi-Quellcode:
PosEx()
an!

Schaedel 13. Jul 2007 10:36

Re: In einem Text weitersuchen
 
Ab Delphi 7 gibt es auch NextPos().

Viele Grüße

Dunkel 13. Jul 2007 11:06

Re: In einem Text weitersuchen
 
Zitat:

Zitat von Schaedel
Ab Delphi 7 gibt es auch NextPos().

Ja? Bei mir (Delphi 7 Personal, Delphi 2005 Personal, Turbo Delphi Explorer, Delphi 2007) nicht... Welche Unit muss ich dafür einbinden?

Die Muhkuh 13. Jul 2007 11:30

Re: In einem Text weitersuchen
 
StrUtils vermutlich.

Dunkel 13. Jul 2007 11:37

Re: In einem Text weitersuchen
 
Zitat:

Zitat von Die Muhkuh
StrUtils vermutlich.

Da ist PosEx() drin, aber nicht NextPos().


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz