![]() |
Delphi-Version: 7
Prüfen ob Klasse sich von spezieller Klasse ableitet
Hi,
lässt sich prüfen ob ein Objekt einer Unterklasse angehört ? Folgende Struktur: Klasse A <- Klasse B <- Klasse C <- Klasse D Ich möchte nun prüfen ob ein Objekt einer beliebigen Unterklasse von der Klasse B angehört. Gibt es dafür eine einfache Möglichkeit ? |
AW: Prüfen ob Klasse sich von spezieller Klasse ableitet
Delphi-Quellcode:
if MyInstance is TMyClass then
|
AW: Prüfen ob Klasse sich von spezieller Klasse ableitet
Zitat:
|
AW: Prüfen ob Klasse sich von spezieller Klasse ableitet
IS Prüft auch abgeleitete Klassen.
IS = unterstüzt das Objekt die Schnittstelllen der gewünschten Klasse? aka IS = entspricht das Objekt diesem Typ oder ist es davon abgeleitet?
Delphi-Quellcode:
oder
if MyObject.ClassTyp = TMyType then
Delphi-Quellcode:
prüft, ob es genau dem Typen entspricht.
if MyObject.ClassNameIs('TMyType') then
Wobei Letzteres nur auf den Namen prüft, es kann aber sein, daß mehrere Typen gleich heißen. |
AW: Prüfen ob Klasse sich von spezieller Klasse ableitet
Alternativ:
Delphi-Quellcode:
Im Unterschied zu
MyInstance.InheritsFrom(TMyClass)
Delphi-Quellcode:
kann man bei
is
Delphi-Quellcode:
auch eine Klassenvariable (class of) übergeben.
InheritsFrom
Also InheritsFrom(ClassB) würde bei Instanzen von ClassB, ClassC und ClassD true geben, aber z.B. bei ClassA false zurückliefern. Willst du direkt auf eine Klasse abfragen, kannst du ClassType verwenden:
Delphi-Quellcode:
type
TClassA = class end; TClassB = class(TClassA) end; TClassC = class(TClassB) end; TClassD = class(TClassD) end; var MyInstance: TClassA; begin if MyInstance.InheritsFrom(TClassB) and (MyInstance.ClassType <> TClassB) then ... // ist ClassC oder ClassD oder sonst eine Klasse, die von ClassB abgeleitet wurde end; |
AW: Prüfen ob Klasse sich von spezieller Klasse ableitet
Subklassen inklusive der Rootklasse reicht mir und das funktioniert auch :)
Super vielen Dank wusste garnicht das der is Operator Vererbung berücksichtigt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz