AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Von TList abgeleitete Klasse um Methode Sort erweitern
Thema durchsuchen
Ansicht
Themen-Optionen

Von TList abgeleitete Klasse um Methode Sort erweitern

Offene Frage von "DataCool"
Ein Thema von DataCool · begonnen am 25. Feb 2010 · letzter Beitrag vom 25. Feb 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#1

Von TList abgeleitete Klasse um Methode Sort erweitern

  Alt 25. Feb 2010, 11:37
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:
function TXyzList.myCompare(Item1, Item2 : pointer) : Integer;
begin
  // meine Implementierung
end;

procedure TXyzList.Sort;
begin
  Sort(@myCompare); // Hier meckert der Compiler
end;
Jetzt bekomme ich allerdings die Fehlermeldungen(mit @ und ohne @):
"[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
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.993 Beiträge
 
Delphi 7 Professional
 
#2

Re: Von TList abgeleitete Klasse um Methode Sort erweitern

  Alt 25. Feb 2010, 11:39
statt function TXyzList.myCompare
besser function myCompare
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: Von TList abgeleitete Klasse um Methode Sort erweitern

  Alt 25. Feb 2010, 11:46
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
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#4

Re: Von TList abgeleitete Klasse um Methode Sort erweitern

  Alt 25. Feb 2010, 11:50
Eventuell funktioniert es, wenn du die Vergleichsfunktion als Klassenfunktion deklarierst
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

Re: Von TList abgeleitete Klasse um Methode Sort erweitern

  Alt 25. Feb 2010, 11:59
Zitat:
TListSortCompare = function (Item1, Item2: Pointer): Integer;
TListSortCompare ist nunmal nur als Funktion deklariert ... also kann man da nicht einfach eine Methode übergeben.

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;
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: Von TList abgeleitete Klasse um Methode Sort erweitern

  Alt 25. Feb 2010, 12:33
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
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

Re: Von TList abgeleitete Klasse um Methode Sort erweitern

  Alt 25. Feb 2010, 13:08
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.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#8

Re: Von TList abgeleitete Klasse um Methode Sort erweitern

  Alt 25. Feb 2010, 13:26
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
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#9

Re: Von TList abgeleitete Klasse um Methode Sort erweitern

  Alt 25. Feb 2010, 13:43
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
Delphi-Quellcode:
procedure TXyzList.Sort;
begin
  inherited Sort(
    function(Item1, Item2: Pointer): Integer
    begin
      Result := myCompare(Item1, Item2);
    end);
end;
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#10

Re: Von TList abgeleitete Klasse um Methode Sort erweitern

  Alt 25. Feb 2010, 15:46
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:
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;
In dieser Kombination kommen in D2007 die schon oben geschilderten Fehlermeldungen.

Greetz Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz