Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#4

Re: Integers sortieren funktioniert nicht

  Alt 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
  Mit Zitat antworten Zitat