Forum: Object-Pascal / Delphi-Language
by himitsu,
28. Jul 2022
Wenn es bei ErrorAt knallt, dann stimmt der Typ in T nicht mit dem im Sender übererin.
Wenn ich alles rauswerfe, was doppelt ist, da IS es bereits macht (GUARD), dann bleibt das übrig:
class function TMyCast<T>.CanCast( Sender : TObject ) : Boolean;
begin
Result := Sender is T;
end;
class function TMyCast<T>.TryCast( Sender : TObject; var ACasted : T ) : Boolean;
begin
Forum: Object-Pascal / Delphi-Language
by himitsu,
28. Jul 2022
Wenn man das Objekt freigegeben hat (Free),
dann kann IS immernoch ein TRUE liefern, wenn im Speicher immernoch der Rumpf des Objektes existiert (nicht bereits überschrieben wurde).
AS würde dort auch noch funktionieren, aber der Zugriff auf dieses eigentlich "nicht mehr vorhandene" Objekt kann natürlich dennoch knallen.
Aber hier etwas beim Zugriff machen zu wollen ist nahezu unmöglich....