Sparst du mit den Packages nicht mehr, als du verlierst?
Ein neuer as-Operator dürfte nicht allzu schwer sein, allerdings verwenden natürlich auch andere Units ihn, sodass das letztlich nur über einen Hook geht - du kannst es allerdings auch mal so probieren.
Delphi-Quellcode:
procedure TestIs(Inst: TObject;
Cls: TClass);
function IsEqual(Cls1, Cls2: TClass): Boolean;
begin
Result := (Cls1.InstanceSize = Cls2.InstanceSize)
and (Cls1.ClassName = Cls2.ClassName);
end;
var InstCls: TClass;
begin
InstCls := Inst.ClassType;
repeat
if IsEqual(InstCls,
Cls)
then
exit;
InstCls := InstCls.ClassParent;
until InstCls =
nil;
raise EInvalidCast.Create('
Invalid class typecast');
end;
Edit: Wer hat mir denn die
Exception EInvalidClass in den Kopf gesetzt?