![]() |
Compilerverhalten bei nicht implementierten abstrakten Methoden
Ahoi!
Wenn ich eine Basisklasse mit verschiedenen abstrakten Methoden baue und eine solche Methode in einer abgeleiteten Klasse nicht implementiere, bekomme ich eim Kompilieren eine Warnung im Log. Kann man irgendwo einstellen, dass statt der Warnung ein Fehler erzeugt wird? Ich möchte sozusagen die Implementierung erzwingen, andernfalls sich das Programm nicht übersetzen lässt. Ich meine mich dunkel zu erinnern, dass das früher bei Delphi 5 oder 7 das Standardverhalten war. Besonders elegant wäre es, wenn ich dieses Verhalten per Compilerschalter abschnittsweise oder unitweise aktivieren könnte. Grüße Cody |
AW: Compilerverhalten bei nicht implementierten abstrakten Methoden
Jein. Man kann bei neuren Delphiversionen die Klasse als abtrakt delarieren, dann lässt sich der Quellcode ohne Implementierung nicht mehr kompilieren.
|
AW: Compilerverhalten bei nicht implementierten abstrakten Methoden
Zitat:
|
AW: Compilerverhalten bei nicht implementierten abstrakten Methoden
Delphi-Quellcode:
statt
= class abstact
Delphi-Quellcode:
.
= class
Delphi-Quellcode:
und irgendwas mit final gibt es auch noch.
class sealed
[add] ![]() ![]() @mk Zitat:
|
AW: Compilerverhalten bei nicht implementierten abstrakten Methoden
Delphi-Quellcode:
Aber kompilieren lässt sich das immer noch. Es knallt halt früher.
TAbtract = class
procedure Proc1; virtual; abstract; end; TStrictAbstract = class abstract procedure Proc1; virtual; abstract; end; |
AW: Compilerverhalten bei nicht implementierten abstrakten Methoden
Zitat:
Delphi-Quellcode:
unit Unit1;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs; type TBasis = class abstract (TObject) protected procedure Foo; virtual; abstract; end; TKind = class (TBasis) end; TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var K: TKind; begin K:= TKind.Create; K.Foo; // <-- EAbstractError K.Free; end; end. |
AW: Compilerverhalten bei nicht implementierten abstrakten Methoden
In den Projektoptionen Hinweise und Warnungen
kannst Du die Warnung auf Fehler stellen dann sollte es knallen. |
AW: Compilerverhalten bei nicht implementierten abstrakten Methoden
Zitat:
|
AW: Compilerverhalten bei nicht implementierten abstrakten Methoden
Liste der Anhänge anzeigen (Anzahl: 1)
Bei mir sieht das so aus!
Eventuell ist das in der Starter anders? |
AW: Compilerverhalten bei nicht implementierten abstrakten Methoden
Projektoptionen -> Delphi-Compiler -> Hinweise und Warnungen -> Ausgabewarnungen -> "Konstruierende Instanz enthält abstrakte Methode" => Auf "Fehler" einstellen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:04 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-2025 by Thomas Breitkreuz