![]() |
Error: Inkompatible Typen Reguläre Prozedur u Methodenzeiger
Ich habe mir eine eigene Klasse von TList abgeleitet. Dieser möchte ich eine Sortierfunktion hinzufügen. Dazu muss man der vorhandenen TList-Funktion Sort etwas vom Typ TListSortCompare übergeben. Ich bekomme es nicht hin. An der markierten Stelle kommt die Fehlermeldung "Inkompatible Typen: Reguläre Prozedur und Methodenzeiger"
Delphi-Quellcode:
TMyList = class(TList)
private SortedColumn: Integer; function MyListSortCompare(Item1, Item2: Pointer): Integer; public procedure SortByColumn(Column: Integer); end; procedure TMyList.SortByColumn(Column: Integer); begin SortedColumn := Column; Sort(MyListSortCompare); //<-- FEHLER: Inkompatible Typen: Reguläre Prozedur und Methodenzeiger end; function TMyList.MyListSortCompare(Item1, Item2: Pointer): Integer; begin result := MachWas(Item1, Item2, SortedColumn); end; |
Re: Error: Inkompatible Typen Reguläre Prozedur u Methodenze
self.Sort()
|
Re: Error: Inkompatible Typen Reguläre Prozedur u Methodenze
Zitat:
|
Re: Error: Inkompatible Typen Reguläre Prozedur u Methodenze
MyListSortCompare muss eine einfache Funktion sein, keine Methode. Deklariere sie also nicht in der Klasse und lasse das TMyList bei der Definition weg.
|
Re: Error: Inkompatible Typen Reguläre Prozedur u Methodenze
Zitat:
|
Re: Error: Inkompatible Typen Reguläre Prozedur u Methodenze
Was sind denn deine Listenelemente?
|
Re: Error: Inkompatible Typen Reguläre Prozedur u Methodenze
Zitat:
|
Re: Error: Inkompatible Typen Reguläre Prozedur u Methodenze
![]() |
Re: Error: Inkompatible Typen Reguläre Prozedur u Methodenze
Hi Apollonius,
Assembler kann ich leider gar nicht. Ich wäre Dir also sehr dankbar, wenn Du (oder andere) es mal probieren würden. |
Re: Error: Inkompatible Typen Reguläre Prozedur u Methodenze
Es dürfte reichen deiner Methode ein stdcall anzuhängen.
Delphi-Quellcode:
TMyList = class(TList)
private SortedColumn: Integer; function MyListSortCompare(Item1, Item2: Pointer): Integer; stdcall; public procedure SortByColumn(Column: Integer); end; procedure TMyList.SortByColumn(Column: Integer); var MyListComparef:function(Item1,Item2:Pointer):integer; begin SortedColumn := Column; MyListcomparef:=MakeProcInstance(MyListcompare); Sort(MyListSortComparef); //<-- FEHLER: Inkompatible Typen: Reguläre Prozedur und Methodenzeiger FreeProcinstance(MyListcompareF); end; function TMyList.MyListSortCompare(Item1, Item2: Pointer): Integer; begin result := MachWas(Item1, Item2, SortedColumn); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz