Dumme Frage, aber das override hast du nicht vergessen, oder?
Nein nicht vergessen
Ich denke eher, du erstellst in Wirklichkeit eine Instanz er Elternklasse mit der noch abstrakten Methode anstatt der erbenden Klasse, oder?
Das stimmt sogar und müsste die beschriebenen Probleme eigentlich erklären. Also habe ich Proc1 in der Vorfahrklasse testweise nicht abstract gemacht sondern nur noch virtual und die leere Prozedur-implementation dort schon angelegt. Auf ein override der leeren Proc1 mit einer weiteren leeren Proc1 in der Nachfahrklasse habe ich dann mal verzichtet. Ansonsten das selbe Konstrukt, wie DeddyH in seinem ersten Beispiel schon so schön darstellt. Resultat: Abstrakter Fehler.
Ich kanns mir nur mit Compileroptimierung erklären, denn während folgender Code den Abstrakten Fehler produziert:
Delphi-Quellcode:
procedure TVorfahrKlasse.Proc1;
begin
end;
liefert folgender Sinnloscode keinen Fehler mehr:
Delphi-Quellcode:
procedure TVorfahrKlasse.Proc1;
var
bDummy: Boolean;
begin
bDummy:= TRUE;
end;