Da hast du auch wieder recht
Man kann das aber umgehen, indem man einfach alle Strings vor dem Setzen des Sorted-Properties mit der entsprechenden Anzahl von '0' ergänzt
Delphi-Quellcode:
Function FillString(Quelle : String; Zeichen : Char; Anzahl : Integer; Anfang : Boolean) : String;
Var
Fuellung : String;
begin
Result := '';
IF Quelle = '' THEN Exit;
Anzahl := Anzahl - Length(Quelle);
IF Anzahl < 1 THEN Exit;
Fuellung := '' + Zeichen;
Fuellung := StrUtils.DupeString(Fuellung,Anzahl);
IF Anfang THEN
Result := Fuellung + Quelle ELSE
Result := Quelle + Fuellung;
end;
Function SortiereZahlen(Eingabe : String) : String;
Var
MyList : TSTringList;
i : Integer;
Begin
Result := '';
MyList := TStringList.Create;
MyList.Delimiter := ',';
MyList.StrictDelimiter := True;
Try
MyList.DelimitedText := Eingabe;
For i := 0 to MyList.Count -1 DO MyList[i] := FillString(MyList,'0',10,True);
MyList.Sorted := True;
Result := MyList.DelimitedText;
Finally
MyList.Free;
End;
Benötigt man die im Rückgabe-String enthaltenen Zahlen danach als Integer-Werte, kann man ohne Probleme die mit voranstehenden Nullen ergänzten Strings zum Umwandeln in Integer verwenden, andernfalls müßte man die Nullen wieder entfernen.