Thema: Delphi Fehler mit CustomSort

Einzelnen Beitrag anzeigen

Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Fehler mit CustomSort

  Alt 5. Dez 2007, 18:33
Hallo,

in deinem Beitrag #1 hast du die Vergleichsroutine als Methode des Formulars vereinbart. Formal ähnelt sie einer Prozedur, die Methode besitzt jedoch einen unsichtbaren (Self-)Parameter und ist somit nicht kompatibel zu der von CustomSort erwarteten Routine. In meinem Beitrag habe ich die Routine so gezeigt, wie sie benötigt wird - jedenfalls fast, denn die Direktive stdcall hatte ich vergessen.

Hier sind noch einmal beide Möglichkeiten:

Delphi-Quellcode:
// Vergleichsroutine als Methode des Formulars
function TForm1.CustomSortMethod(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall;
begin
  Result := -CompareText(Item1.Caption,Item2.Caption);
end;

// Vergleichsroutine als einfache Prozedur
function CustomSortProc(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall;
begin
  Result := -CompareText(Item1.Caption,Item2.Caption);
end;

procedure TForm1.ListView2ColumnClick(Sender: TObject; Column: TListColumn);
begin
  ListView1.CustomSort(@CustomSortMethod, 0); // das wird NICHT akzeptiert
  ListView1.CustomSort(@CustomSortProc, 0); // das wird akzeptiert
end;
Nur die zweite Form wird vom Compiler akzeptiert.

Gruß Hawkeye
  Mit Zitat antworten Zitat