AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Methodenaufruf einer bestimmten Klasse erzwingen
Thema durchsuchen
Ansicht
Themen-Optionen

Methodenaufruf einer bestimmten Klasse erzwingen

Ein Thema von Ralf Meyer · begonnen am 20. Nov 2010 · letzter Beitrag vom 20. Nov 2010
Antwort Antwort
Ralf Meyer

Registriert seit: 24. Mär 2008
36 Beiträge
 
#1

Methodenaufruf einer bestimmten Klasse erzwingen

  Alt 20. Nov 2010, 10:02
Die Methode meiner realen Klasse wird nicht aufgerufen, wie bekomme ich das hin.

Mein Code:

Delphi-Quellcode:
Type
  tMyList = class( tList )
    Procedure Add( Const cClass : tMyBaseClass ) ;
  End ;

  tMyclassDef = class of tMyBaseClass ;
  tMyBaseClass = class
    classTyp : tmyClassDef ;
    Procedure Clone ; Virtual ;
  End ;

  tMySpezielleKlasse = class ( myBaseClass )
    Procedure Clone ; Override ;
  End ;

  ...

    abc := tMySpezielleKlasse.create ;
    abc.ClassType := tMySpezielleKlasse ;

    List := tMytMyList.create ;
    List.Add ( abc ) ;

    // jetzt kommt das Problem
    ab_neu := tMyBaseClass( List[0] ).Clone ; // ruft das Clone von tMyBaseClass auf

    lClassType := tMyBaseClass( List[0] ).ClassType ;
    ab_neu := ( List[0] as lClassType ).Clone ; // ruft auch das Clone von tMyBaseClass auf

    // da wichtige Objekte Instanziert werden müssen, muss das Clone meiner speziellen
    // Klasse aufgerufen werden
  ...
Ich müsste irgendwie den Aufruf der abgeleiteten Klasse erzwingen - aber wie?

Weiß jemand einen Rat. Gruß
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Methodenaufruf einer bestimmten Klasse erzwingen

  Alt 20. Nov 2010, 10:07
Guten Morgen,

besteht das Problem immer noch wenn Du die Methode abstract definierst?

Delphi-Quellcode:
  tMyclassDef = class of tMyBaseClass ;
  tMyBaseClass = class
    classTyp : tmyClassDef ;
    Procedure Clone ; Abstract; Virtual ;
  End ;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#3

AW: Methodenaufruf einer bestimmten Klasse erzwingen

  Alt 20. Nov 2010, 10:11
in TMyClassDef Clone auf Virtual ;abstract; setzen
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Methodenaufruf einer bestimmten Klasse erzwingen

  Alt 20. Nov 2010, 10:34
Abstract besagt nur, daß man in tMyBaseClass für Clone keinen Code hinterlegen will.
Das hat aber garnichts mit dem Aufruf zu tun.

abc.ClassType := tMySpezielleKlasse ; sollte in Delphi doch eigentlich nicht funktionieren.
Und wozu soll dieses gut sein?

Ansonsten sollte dein Code eigentlich funktionieren.
Kannst du mal bitte ein komplettes Beispielprojekt hochladen?

Welche Delphi-Version nutzt du denn?


Warum nutzt du TList und nicht TObjectList, für die Verwaltung deiner Objekte, bzw. als Vorfahre von tMyList?
Und was macht dein Add intern?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (20. Nov 2010 um 10:36 Uhr)
  Mit Zitat antworten Zitat
Ralf Meyer

Registriert seit: 24. Mär 2008
36 Beiträge
 
#5

AW: Methodenaufruf einer bestimmten Klasse erzwingen

  Alt 20. Nov 2010, 12:43
Was für einfache Sachen man manchmal übersehen kann ...

Delphi-Quellcode:
  tMyclassDef = class of tMyBaseClass ;
 ...

  tMySpezielleKlasse = class ( myBaseClass )
    Procedure Clone ; Virtual; // <= Fehler Virtual anstatt Override
  End ;
Ich habe die Methode Clone in der abgeleiteten Klasse als Virtual und nicht als Override deklariert. Dann kann es auch nicht funktionieren.

Danke für eure Hilfe.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: Methodenaufruf einer bestimmten Klasse erzwingen

  Alt 20. Nov 2010, 15:43
Dein erstes Post sagt etwas anders.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Methodenaufruf einer bestimmten Klasse erzwingen

  Alt 20. Nov 2010, 16:48
Das kommt davon, wenn man nicht das postet, womit man Probleme hat.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:23 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