In den standard Bibliotheken von Delphi sucht man vergeblich nach Methoden zur komfortablen Stringverarbeitung. Man muss sich mit Pos, PosEx und Copy selber zusammenbauen was man braucht. Die häufigste Anwendung ist sicher, das spliten eines Strings aufgrund eines Trenners. Folgende Methode erledigt dies zuverlässig und schreibt jeden Teilstring in eine Zeile einer TStringList Instanz:
function SplitItWell( str, split : String ) : TStringList;
var
offset, last : integer;
begin
offset := 1;
last := 1;
Result := TStringList.Create;
if str = '' then Exit;
if length( str ) <= length( split ) then
begin
Result.Add( str );
Exit;
end;
repeat
offset := PosEx( split, str, offset );
if offset = 0 then
Result.Add( Copy( str, last, length( str ) ) )
else
begin
Result.Add( Copy( str, last, offset - last ) );
offset := offset + length( split );
last := offset;
end;
until offset = 0;
end;
SplitItWell erstellt eine Instanz von TStringList und zerlegt str in seine Einzelteile überall da wo split vorkommt.
Um die Stringliste wieder in einen String zu verwandeln genügt folgende Methode:
function AssembleItWell( stringList : TStringList; sep : String ) : String;
var
I : Integer;
begin
Result := '';
for I := 0 to stringList.Count - 1 do
if I = stringList.Count - 1 then
Result := Result + stringList[ i ]
else
Result := Result + stringList[ i ] + sep
end;
Als Anwendungsbeispiel sortiert folgender Code die Elemente in einem String alphanumerisch.
function SortStringBySeperator( str, sep : String ) : String;
var
SplitList : TStringList;
begin
SplitList := SplitItWell( str, sep );
SplitList.Sorted := True;
Result := AssembleItWell( SplitList, sep );
FreeAndNil( SplitList );
end;
Benötigte Units: StrUtils;
This entry was posted on Feb 27, 2007 at 23:18:51 and is filed under Delphi. You can follow any responses to this entry through the RSS 2.0 feed, or leave a response (below) .
Bisher keine Kommentare für diesen Eintrag...
Kommentare sind für diesen Beitrag geschlossen.