Nicht ganz optimiert, aber geht
mal auf die schnelle, man kann sicher wieder vieles rausschmeißen
Delphi-Quellcode:
function StringListSortCompare2(List: TStringList; Index1, Index2: Integer): Integer;
var
i : Integer;
b1,b2 : Byte;
begin
Result := 1;
if Length(List[Index1]) < Length(List[Index2]) then
Result := -1
else if (Length(List[Index1]) = Length(List[Index2])) then
begin
Result := 0;
for i := 1 to Length(List[Index1]) do
if (List[Index1][i] <> List[Index2][i]) then
begin
b1 := Ord(List[Index1][i]);
b2 := Ord(List[Index2][i]);
if b1 < 58 then b1 := b1 + 75;
if b2 < 58 then b2 := b2 + 75;
if b1 < b2 then
Result := -1
else
Result := 1;
break;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
hstrl : TStringList;
begin
hstrl := TStringList.Create;
hstrl.Add('fhbb-009.xml');
hstrl.Add('fhbb-0092.xml');
hstrl.Add('fhbb-0093.xml');
hstrl.Add('fhbb-009a.xml');
hstrl.Add('fhbb-009b.xml');
hstrl.CustomSort(StringListSortCompare2);
Memo1.Lines.Text := hstrl.Text;
hstrl.Free;
end;