Hi,
habe folgende Function hier im Forum gefunden:
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:
| function TFMain.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; |
um einen String durch Trennzeichen (bei mir ";") in ein Array zu schreiben - funzt auch wunderbar, bloß muss bei mir eins beachtet werden:
wenn ich einen String habe, der so aussieht:
Vorname;Nachname;Ort;freitext;irgendwas
dann ist alles ok, wenn ich allerdings so einen hier habe:
Vorname;Nachname;Ort;"freitext; und mehr";irgendwas
dann soll die Function den Strichpunkt nach dem freitext NICHT als Trennzeichen sehen, da sie in Anführungszeichen steht - kapiert was ich meine?
Ich blicke bei der Function nicht so ganz durch, wie baue ich das ein? Ich hoffe ihr könnt mir helfen...
Moderiert von
Motzi: Topic Verschoben