Wenn du direkt auf einen Typ prüfen willst, dann mußt du den Typ auch direkt "vergleichen".
z.B.:
Delphi-Quellcode:
if obj.ClassType = TIrgendwas then
if obj.ClassName = 'TIrgendwas' then
if obj.ClassNameIs('TIrgendwas') then
Im Gegensatz zum IS muß man hier aber auf Assigned selber prüfen, auch wenn Emba das im ClassNameIf eigentlich hätte mit aufnehmen können.
Zitat:
if Assigned(obj) and (obj is TIrgendwas) then
Das IS prüft auch auf Assigned.
TRUE = wenn ein Objekt drin ist und wenn es dem Typ entspricht, oder davon abgeleitet wurde.
Das AS läßt aber ein NIL durch, denn NIL könnte man auch als den Typ ansehen, nur daß keine Instanz davon vorhanden ist.
AS knallt also nur, wenn ein "falscher" Typ drin ist.