Nun ja, es gibt den Befehl Pos. Der gibt die Position eines Strings innerhalb eines anderen zurück.
Und mit Copy kann ein bestimmter Teil des durchsuchten Strings geholt werden.
Damit solltest du es mal versuchen.
Aber hier mal ein bisschen Quelltext...
Ich hab irgendwann mal ne Funktion geschrieben, die das ganze etwas langsamer aber dafür selbstständig durchführt...
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38:
| procedure ParseString(AnalyzeString, Trennung: String; var Daten: TStringList); overload; var tmpString: String; begin if Daten = nil then Daten:=TStringList.Create else Daten.Clear; while Length(AnalyzeString)>0 do begin If Pos(Trennung,AnalyzeString)>0 then begin tmpString:=Copy(AnalyzeString,1,Pos(Trennung,AnalyzeString)-1); Delete(AnalyzeString,1,Pos(Trennung,AnalyzeString)); end Else begin tmpString:=AnalyzeString; AnalyzeString:=''; end; Daten.Add(tmpString); end; end;
var Parts: TStringList; i: Integer; begin ParseString(DeinString, '\', Parts); for i := 0 to Parts.Count - 1 do ShowMessage(Parts[i]); Parts.Free; end; |
Erklärung:
ParseString bekommt den zu parsenden String und das Trennzeichen, an dem es trennen soll. Außerdem muss eine Variable vom Typ TStringlist mit übergeben werden, in die dann die einzelnen Teile kommen.
Dann kann mit Parts[i] auf die einzelnen Bestandteile zugegriffen werden, als Beispiel zeigt der Code oben die mit jeweils einem Meldungsfenster an...