AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Der Compiler merkt nicht, dass eine Klasse nicht vollständig implementiert ist
Thema durchsuchen
Ansicht
Themen-Optionen

Der Compiler merkt nicht, dass eine Klasse nicht vollständig implementiert ist

Ein Thema von Der schöne Günther · begonnen am 14. Jun 2013 · letzter Beitrag vom 15. Jun 2013
Antwort Antwort
Der schöne Günther

Registriert seit: 6. Mär 2013
6.155 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Der Compiler merkt nicht, dass eine Klasse nicht vollständig implementiert ist

  Alt 14. Jun 2013, 13:30
Delphi-Version: XE2
Folgendes Beispiel:


Header:
Delphi-Quellcode:
type
   TSomeAbstractClass = class abstract
      procedure someAbstractMethod(); virtual; abstract;
   end;
   
   TSomeChildClass = class(TSomeAbstractClass)
      // keine Implementation von someAbstractMethod()
   end;


Implementation
Delphi-Quellcode:
procedure noAbstractError();
type
   TMyClassType = class of TSomeAbstractClass;
const
   myClass: TMyClassType = TSomeChildClass;
var
   myObject: TSomeAbstractClass;
begin

   myObject := myClass.Create(); // Kein Fehler oder Warnung
   myObject := TSomeChildClass.Create(); // Compilerfehler/-Warnung

end;



Was kann ich dagegen tun? Ich möchte einmal oben auf einen Block festgelegt haben, eine Instanz welcher Klasse erstellt wird und nicht in die Falle tappen, aus Versehen Klassen zu instanziieren, die nicht alle Methoden implementiert haben.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Der Compiler merkt nicht, dass eine Klasse nicht vollständig implementiert ist

  Alt 14. Jun 2013, 13:34
Nix. Siehe dort
Zitat:
Hinweis: Delphi lässt die Instantiierung einer als abstract deklarierten Klasse aus Gründen der Abwärtskompatibilität zu, aber dieses Feature sollten nicht mehr verwendet werden.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.155 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Der Compiler merkt nicht, dass eine Klasse nicht vollständig implementiert ist

  Alt 14. Jun 2013, 13:37
Nein, nein.

Ich kann ja mit der Compilerwarnung "Konstruierende Instanz enthält abstrakte Methode" mich ja immerhin davor warnen lassen oder sogar einen Fehler draus machen. Es geht darum, dass der Kerl es (auf dem ersten Weg) überhaupt nicht merkt.

Anhang:

Die Lösung war einfacher als man denkt:
Delphi-Quellcode:
type
    TMyClassType = class of TSomeAbstractClass;
 const
    myClass: TMyClassType = TSomeChildClass;
wird zu

Delphi-Quellcode:
type
    TMyClassType = TSomeChildClass
und alles läuft, wie ich es mir vorgestellt habe.

Geändert von Der schöne Günther (14. Jun 2013 um 13:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: Der Compiler merkt nicht, dass eine Klasse nicht vollständig implementiert ist

  Alt 14. Jun 2013, 16:11
Nix. Siehe dort
Zitat:
Hinweis: Delphi lässt die Instantiierung einer als abstract deklarierten Klasse aus Gründen der Abwärtskompatibilität zu, aber dieses Feature sollten nicht mehr verwendet werden.
Wusste gar nicht, dass das so in der Doku steht - wär besser, wenn sie das Feature endlich implementieren würden.

Aber nein, da macht man lieber andere Sachen kaputt, die schon seit 4 Jahren funktionieren...
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (14. Jun 2013 um 16:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Der Compiler merkt nicht, dass eine Klasse nicht vollständig implementiert ist

  Alt 15. Jun 2013, 11:07
Schade, dass ich noch nicht dazu gekommen bin generische Methoden in FPC zu implementieren... sonst würde ich das Beispiel gern mal ausprobieren (aber ich speichere es mir für die Zukunft mal ab )

Gruß,
Sven
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
  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 16:00 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