Mathias hat geschrieben:Beim Delimeter kann man nur ein Trennzeichen eingeben.
Dazu noch eine Frage, wieso hat CommaText mit mehreren Zeichen getrennt ?
Weil DelimitedText (und damit auch CommaText als Spezialfall davon) standardmäßig beim Leerzeichen trennt. Und dies verhindert man, wenn StrictDelimiter auf true gesetzt wird.
Mathias hat geschrieben:String.Splitt(...); ist das flexibelste, das ich kenne.
Aber vorsicht, wenn das Trennzeichen in doppelten Einführungszeichen eingeschlossen ist, weil man den so markierten Teilstring NICHT trennen möchte. Von den drei im folgenden Beispiel durchprobierten Varianten entspricht eigentlich nur das mit TStringList/DelimitedText meinen Vorstellungen:
Code: Alles auswählen
program Project1;
uses
SysUtils, Classes;
const
str = 'a;b;c d;"a;b"';
var
sa: TStringArray;
s: String;
L: TStringList;
begin
WriteLn('Split('';'')');
sa := str.Split(';');
for s in sa do
WriteLn(s);
WriteLn;
WriteLn('Split('';'', ''"'', ''"'')');
sa := str.Split(';', '"', '"');
for s in sa do
WriteLn(s);
WriteLn;
WriteLn('StringList.DelimitedText');
L := TStringList.Create;
L.Delimiter := ';';
L.StrictDelimiter := true;
L.DelimitedText := str;
for s in L do
WriteLn(s);
ReadLn;
end.