Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
Delphi 12 Athens
|
Re: Integers sortieren funktioniert nicht
29. Aug 2008, 10:54
Ich hab mal einen Test mit einer Listbox gemacht:
Delphi-Quellcode:
function CompareIntAsc(List: TStringlist; Index1, Index2: Integer): Integer;
var
d1, d2: Integer;
begin
if TryStrToInt(List[Index1],d1) and TryStrToInt(List[Index2],d2) then
begin
if d1 < d2 then
Result := -1
else if d1 > d2 then
Result := 1
else
Result := 0;
end else
Result := lstrcmp(PChar(List[Index1]), PChar(List[Index2]));
end;
function CompareIntDesc(List: TStringlist; Index1, Index2: Integer): Integer;
var
d1, d2: Integer;
begin
if TryStrToInt(List[Index1],d1) and TryStrToInt(List[Index2],d2) then
begin
if d1 < d2 then
Result := 1
else if d1 > d2 then
Result := -1
else
Result := 0;
end else
Result := -lstrcmp(PChar(List[Index1]), PChar(List[Index2]));
end;
procedure TForm1.Button1Click(Sender: TObject);
var sl: TStringlist;
begin
sl := TStringlist.Create;
try
sl.Assign(ListBox1.Items);
sl.CustomSort(CompareIntAsc);
ListBox1.Items.Assign(sl);
finally
sl.Free;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var sl: TStringlist;
begin
sl := TStringlist.Create;
try
sl.Assign(ListBox1.Items);
sl.CustomSort(CompareIntDesc);
ListBox1.Items.Assign(sl);
finally
sl.Free;
end;
end;
Funktioniert einwandfrei.
Detlef "Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
|