![]() |
Von TList abgeleitete Klasse um Methode Sort erweitern
Hi,
ich möchte gerne eine von TList abgeleitete KLasse um die Methode sort erweitern. Ich weiß auch das ich das ganze normalerweise folgendermassen funktionieren sollte:
Delphi-Quellcode:
Jetzt bekomme ich allerdings die Fehlermeldungen(mit @ und ohne @):
function TXyzList.myCompare(Item1, Item2 : pointer) : Integer;
begin // meine Implementierung end; procedure TXyzList.Sort; begin Sort(@myCompare); // Hier meckert der Compiler end; "[DCC Fehler] obj_xyz.pas(1308): E2009 Inkompatible Typen: 'Reguläre Prozedur und Methodenzeiger" oder "[DCC Fehler] obj_xyz.pas(1310): E2036 Variable erforderlich" Das Problem scheint/ist wohl die KLassenmethode, ich möchte die Vergleichsmethode ungern auslagern. Hat jemand einen Lösungsansatz ? Greetz Data |
Re: Von TList abgeleitete Klasse um Methode Sort erweitern
statt function TXyzList.myCompare
besser function myCompare |
Re: Von TList abgeleitete Klasse um Methode Sort erweitern
Hi,
das eine auslagern aus der Klasse funktioniert weiß ich ;-) Ich möchte es aber ungern aus der Klasse auslagern, gibt es keine andere Möglichkeit ? Greetz Data |
Re: Von TList abgeleitete Klasse um Methode Sort erweitern
Eventuell funktioniert es, wenn du die Vergleichsfunktion als Klassenfunktion deklarierst
|
Re: Von TList abgeleitete Klasse um Methode Sort erweitern
Zitat:
Versuch mal eines davon
Delphi-Quellcode:
procedure TXyzList.Sort;
begin Sort(function(Item1, Item2: Pointer): Integer begin Result := myCompare(Item1, Item2); end); end; procedure TXyzList.Sort; begin SortList(myCompare); end; |
Re: Von TList abgeleitete Klasse um Methode Sort erweitern
Hi,
leider alles nein :? Dann werde ich wohl oder übel die function erstmal aus der Klasse lösen, aber falls jemanden noch eine Lösung zu dem Problem einfällt immer her damit. Danke & Greetz Data |
Re: Von TList abgeleitete Klasse um Methode Sort erweitern
Was bemängelt denn der Compiler an der anonymen Prozedur? (also an dem ersten Beispiel)
Immerhin hab ich es direkt von Emba aus deren eigenem Sortaufruf. |
Re: Von TList abgeleitete Klasse um Methode Sort erweitern
Er bemängelt :
[DCC Fehler] obj_Leistungen.pas(1319): E2029 Ausdruck erwartet, aber 'FUNCTION' gefunden <<< -- bei Wort function [DCC Fehler] obj_Leistungen.pas(1319): E2023 Funktion benötigt Ergebnistyp <<< -- beim Wort Item1 |
Re: Von TList abgeleitete Klasse um Methode Sort erweitern
Und du hast das auch in deinem D2010 getestet?
[edit] was mir grade auffällt ... Sort und Sort heißen gleich, was natürlich nicht grad von Vorteil ist. eventuell ja so :gruebel:
Delphi-Quellcode:
procedure TXyzList.Sort;
begin inherited Sort( function(Item1, Item2: Pointer): Integer begin Result := myCompare(Item1, Item2); end); end; |
Re: Von TList abgeleitete Klasse um Methode Sort erweitern
Hi,
dieses Projekt ist im Moment in D2007 Prof. Das mit den gleichen Namen ist mir auch schon aufgefallen, deshalb habe ich es wie folgt geändert :
Delphi-Quellcode:
In dieser Kombination kommen in D2007 die schon oben geschilderten Fehlermeldungen.
function TLstPosList.ComparePosNumbers(Item1, Item2 : Pointer): Integer;
begin // end; procedure TLstPosList.SortWithPosNr; begin //Sort(@ComparePosNumbers); Sort(function(Item1, Item2: Pointer): Integer begin Result := ComparePosNumbers(Item1, Item2); end); end; Greetz Data |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:45 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 by Thomas Breitkreuz