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?