Also das ganze ist schon prinzipiell möglich.
Delphi-Quellcode:
type
Base = class
procedure Convert;
end;
Derived = class(Base)
procedure Message;
end;
{...}
procedure Base.Convert;
begin
Self.Destroy;
Self := Derived.Create;
end;
procedure Derived.Message;
begin
ShowMessage('Hat funktioniert.');
end;
{...}
var
C: Base;
begin
C := Base.Create;
C.Convert;
if (C is Derived) then (C as Derived).Message;
end;