AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Instanz von T wird mit der abstrakten Methode XYZ angelegt
Thema durchsuchen
Ansicht
Themen-Optionen

Instanz von T wird mit der abstrakten Methode XYZ angelegt

Ein Thema von Codehunter · begonnen am 19. Mär 2018 · letzter Beitrag vom 19. Mär 2018
Antwort Antwort
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

Instanz von T wird mit der abstrakten Methode XYZ angelegt

  Alt 19. Mär 2018, 09:34
Delphi-Version: 10.2 Tokyo
Hallo!

Ich bekomme ein paar Compilerwarnungen der Art
Code:
Instanz von T wird mit der abstrakten Methode XYZ angelegt
Das ist soweit nicht dramatisch, weil die betreffende Klasse diese Methoden tatsächlich nicht benötigt. Mich würde aber interessieren ob es eine elegantere Möglichkeit gibt, diese Compilerwarnung zu beseitigen als leere Dummy-Prozeduren in den implementation-Abschnitt zu schreiben.

Grüße
Cody
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.098 Beiträge
 
Delphi 12 Athens
 
#2

AW: Instanz von T wird mit der abstrakten Methode XYZ angelegt

  Alt 19. Mär 2018, 09:51
Mich würde aber interessieren ob es eine elegantere Möglichkeit gibt, diese Compilerwarnung zu beseitigen als leere Dummy-Prozeduren in den implementation-Abschnitt zu schreiben.
Ja, überarbeite dein Design so, daß die Methode erst in der Ableitungshierarchie deklariert wird, wo sie gebraucht wird. Wenn sie dort immer noch abstrakt sein muss, dann stelle sicher, daß keine Instanz dieser abstrakten Klasse erstellt wird.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Instanz von T wird mit der abstrakten Methode XYZ angelegt

  Alt 19. Mär 2018, 09:52
Vor und nach dem Create per Compiler-Befehl die Warnung deaktivieren?

Aber wer sagt dir jetzt, dass in Zukunft diese Methode nicht doch irgendwann mal versucht wird aufzurufen?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Instanz von T wird mit der abstrakten Methode XYZ angelegt

  Alt 19. Mär 2018, 10:19
Ja, überarbeite dein Design so, daß die Methode erst in der Ableitungshierarchie deklariert wird, wo sie gebraucht wird.
Vor und nach dem Create per Compiler-Befehl die Warnung deaktivieren?

Aber wer sagt dir jetzt, dass in Zukunft diese Methode nicht doch irgendwann mal versucht wird aufzurufen?
Wenn ich das beides jetzt zusammen nehme, dann erscheint es mir am sinnvollsten, die betreffende Methode bereits in der Basisklasse nicht mehr abstrakt zu halten sondern dort mit einer leeren Prozedur anzulegen. So habe ich diesen "Dummy" nur einmal und nicht in jeder abgeleiteten Klasse. Mit dem constructor und destructor von TObject verhält es sich ja ganz ähnlich.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Instanz von T wird mit der abstrakten Methode XYZ angelegt

  Alt 19. Mär 2018, 10:22
Noch besser nicht Basisklasse, sondern erst in der Hierarchie, wenn benötigt
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Instanz von T wird mit der abstrakten Methode XYZ angelegt

  Alt 19. Mär 2018, 10:36
Das ist richtig, im konkreten Fall jedoch etwas unpraktikabel, weil es ein Delphi Starter ist. Ich müsste weiter oben in der Hierarchie schon abzweigen und dann jede Menge nachimplementieren. Da ist es deutlich einfacher und sicherer, einfach leere Prozeduren anzulegen. Im ungünstigsten Fall passiert dann einfach gar nichts, aber es kracht nicht mit einer Abstract Exception. Da es sich bei den bisher abstraktion Methoden um Functions handelt, gebe ich einfach den Defaultwert zurück, auf den ich dann in der Routine prüfen kann, wo dynamisch die eine oder andere Kindklasse verwendet wird.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.098 Beiträge
 
Delphi 12 Athens
 
#7

AW: Instanz von T wird mit der abstrakten Methode XYZ angelegt

  Alt 19. Mär 2018, 11:06
Wenn du sicher bist, daß die Methoden nur in überschreibenden Klassen verwendet werden, kannst du auch in der Dummy-Methode eine Assertion einbauen oder eine EAbstractError -Exception werfen. Dann bekommst du wenigstens mit, wenn sich am Aufrufverhalten ungewollt etwas ändert.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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:59 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