Einzelnen Beitrag anzeigen

Benutzerbild von Codehunter
Codehunter

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

AW: Compilerverhalten bei nicht implementierten abstrakten Methoden

  Alt 5. Jul 2018, 11:55
Aber kompilieren lässt sich das immer noch. Es knallt halt früher.
Genau deswegen fragte ich ja. Hier mein Versuch, der sich aber auch problemlos übersetzen lässt und erst eine Runtime-Exception wirft wenn man die abstrakte Methode aufruft. Im Grunde also kein anderes Verhalten als bei nicht abstrakter Basisklasse. Insofern sehe ich grad den Unterschied nicht.
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.
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