x1020: Instanz von '%s' mit abstrakter Methode '%s.%s' wird konstruiert (Delphi)
Nach oben zu Fehler- und Warnungsmeldungen (Delphi)
Der zu compilierende Quelltext konstruiert Instanzen von Klassen, die abstrakte Methoden enthalten.
program Produce; (*$WARNINGS ON*) (*$HINTS ON*) type Base = class procedure Abstraction; virtual; abstract; end; var b : Base; begin b := Base.Create; end.
Eine abstrakte Prozedur existiert nicht, so dass es gefährlich wird, Instanzen einer Klasse zu erstellen, die abstrakte Prozeduren enthält. In diesem Fall ist die Erstellung von b die Ursache für die Warnung. Jeder Aufruf von Abstraction während der hier erstellten Instanz von b würde zu einem Laufzeitfehler führen. Es wird ein Hinweis ausgegeben, dass der zu 'b' zugewiesene Wert niemals benutzt wird.
program Solve; (*$WARNINGS ON*) (*$HINTS ON*) type Base = class procedure Abstraction; virtual; end; var b : Base; procedure Base.Abstraction; begin end; begin b := Base.Create; end.
Eine Lösung dieses Problems ist die Entfernung der abstrakten Anweisung aus der Deklaration der Prozedur, wie hier gezeigt wird. Eine andere Möglichkeit wäre, eine Klasse von Base abzuleiten und dann eine konkrete Version von Abstraction bereitzustellen. Es wird ein Hinweis ausgegeben, dass der zu 'b' zugewiesene Wert niemals benutzt wird.