Ich war gerade auch auf der Suche danach, einen String zu splitten und einen Rückgabewert zu erhalten (für eine bestimmte Position im String), mittels einer Standard-Funktion in Delphi, um nicht immer direkt meine eigenen Units einbinden zu müssen, wenn man mal nur einen kleinen Demo-source zeigen möchte.
SplitString hatte ich dann in StrUtils gefunden, aber hier im Forum nochmal interessehalber mal nach "Splitstring" gesucht.
Und siehe da, String.Split ist natürlich noch viel schöner
und außerdem schon in System.Sysutils drin, die automatisch eingebunden wird, wenn man eine neue Form anlegt.
Damit kann man das elegant so machen:
Delphi-Quellcode:
procedure TF_Main.Button1Click(Sender: TObject);
var
s, Part:
string;
begin
s := '
#Müller#Hans#Bonn';
// bisher "GetFieldStr" aus meiner eigenen Unit
// ShowMessage (GetFieldStr ('#', S, 2); // Müller, Zähung 1-basiert
ShowMessage (Splitstring (S, '
#')[1]);
//Müller, Zählung 0-basiert
// Noch kürzer geht es so
ShowMessage (S.Split(['
#'])[3]);
// Bonn
end;
Etwas schade ist zwar, dass ein dynamisches Array für alle Teilstrings erzeugt wird, da ich eigentlich nur einen Eintrag brauche, aber wie gesagt, brauche keine extra
Unit und wenn es nicht auf Performance ankommt, bzw. ein Demo zu gestalten, ohne Drittfunktionen zu brauchen, dann geht das schon mal so.