Sonderlich schön finde ich es nicht, aber das hier hat unter Delphi 7 funktioniert:
Delphi-Quellcode:
type
TAbstractClass =
class
public
constructor Create;
virtual;
end;
TDings =
class(TAbstractClass)
public
constructor Create;
override;
end;
...
{ TAbstractClass }
constructor TAbstractClass.Create;
begin
if ClassName = '
TAbstractClass'
then
raise Exception.CreateFmt('
%s darf nicht direkt instanziert werden, benutzen Sie einen Nachfolger.', [ClassName]);
end;
{ TDings }
constructor TDings.Create;
begin
inherited;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
SomeClass: TAbstractClass;
begin
SomeClass := TAbstractClass.Create;
//Exception
SomeClass.Free;
SomeClass := TDings.Create;
//alles OK
SomeClass.Free;
end;
[edit] Sry, Willkommen in der
DP [/edit]