versuch das mal:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| function explode(s : string; ch : char; var args : tstrings): integer; var p,i : integer; begin p := 1; for i := 1 to length(s) do begin if (s[i] = ch) or (i = length(s)) then begin args.Add(copy(s,p,i-p)); p := i + 1; end; end; result := args.count; end; |
oder so:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| function explode(s : string; ch : char; var args : tstrings): integer; var p : integer; begin while length(s) > 0 do begin p := pos(ch, s); if p > 0 then begin args.Add(copy(s,1,p-1)); delete(s,1,p); end else begin args.Add(s); s := ''; end; end; result := args.count; end; |
die 2. ist wohl die bessere....
du solltest vorher die stringlist erstellen und dann an die funktion übergeben.
s ist der zu durchsuchende string
ch ist der platzhalter (leerzeichen, semikolon, ...)
args die stringlist
achso: die funktion berücksichtigt nur ein trennzeichen. wenn also 5 leerzeichen aufeinander folgen, kommen auch 5 einträge in der stringlist hinzu
man könnte auch das funktionsergebnis als stringlist zurückgeben. naja wie man will halt.
Alle Rechtschreibfehler sind gewollt und sollen meine Individualität verstärkt zum Ausdruck bringen.