Deine Funktion kommt nur mit kurzen Strings klar und ist vom Aufwand O(n^2), weil für jedes Token immer von Anfang an gesucht wird. Ob das Schneller ist, bezweifle ich mal ganz stark.
War auch nur mal als Anfangs-Denkanstoss gedacht. Ich habe auch schon meine eigene Version daraus gemacht, die z.B. nicht immer beim Beginn beginnt, und die macht den Job sehr gut.
Im Gegensatz dazu ist die TStringList-Geschichte sehr viel mächtiger, denn sie kommt mit allen Stringtypen und mit in Gänsefüschen eingeschlossenen Texten klar, z.B. wird a,"b,c",d
in drei Strings ("a", "b,c" und "d") aufgeteilt.
Wenn man das will bzw braucht ... klar. Kann man aber auch in die Parserfunktion hineinprogrammieren, oder?
Der Code von TStringlist sieht auch ganz schön flott aus.
Stimmt, aber es hängt eben ein komplettes Objekt hinten dran und das ist für meinen Geschmack *zu* mächtig (mächtig viel Verwaltungsaufwand nämlich). Was das erste Codebeispiel auch verschweigt: einen try-finally-Block brauchen wir korrekterweise noch zusätzlich.
Aber es ist im Endeffekt alles Geschmacksache und der beste Code ist der, der den Job erledigt und vom Kunden bezahlt wird