Zuerst möchte ich sagen, dass ich das nicht selbst geschrieben habe, sondern jbg in
diesem Thread.
Die funktion dient dazu einen String der durch ein bestimmtes Zeichen bzw durch eine bestimtme Zeichenkette unterteilt ist in ein Array zu schreiben. Unter PHP gibt es diese funktion von Haus aus, und sie nennt sich
explode.
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: 39: 40: 41: 42: 43: 44: 45:
| type TStringDynArray = array of string;
function Explode(const Separator, S: string; Limit: Integer = 0): TStringDynArray; var SepLen: Integer; F, P: PChar; ALen, Index: Integer; begin SetLength(Result, 0); if (S = '') or (Limit < 0) then Exit; if Separator = '' then begin SetLength(Result, 1); Result[0] := S; Exit; end; SepLen := Length(Separator); ALen := Limit; SetLength(Result, ALen);
Index := 0; P := PChar(S); while P^ <> #0 do begin F := P; P := StrPos(P, PChar(Separator)); if (P = nil) or ((Limit > 0) and (Index = Limit - 1)) then P := StrEnd(F); if Index >= ALen then begin Inc(ALen, 5); SetLength(Result, ALen); end; SetString(Result[Index], F, P - F); Inc(Index); if P^ <> #0 then Inc(P, SepLen); end; if Index < ALen then SetLength(Result, Index); end; |
Aufrufen könnt ihr die Funktion z.B. so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| var s: string; exparr: TStringDynArray; x: integer;
begin s := 'ErstesElement||fooo||blabla||töhö'; exparr := explode('||', s); for x:=0 to High(exparr) do ShowMessage('String = '+s+#13+#10+'Index = '+inttostr(x)+#13+#10+#13+#10+exparr[x]); end; |
Ihr solltet hierbei nacheinander Message Boxes bekommen die so aussehen:
Zitat: |
String = ErstesElement||fooo||blabla||töhö
Index = 0,1,2,3
Das entsprechende Item |
.: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.