Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Typ einer Objektinstanz prüfen (https://www.delphipraxis.net/159952-typ-einer-objektinstanz-pruefen.html)

FriendOfDelphi 20. Apr 2011 08:50

Delphi-Version: 5

Typ einer Objektinstanz prüfen
 
Hallo Allerseits,

wie kann ich in Delphi überprüfen, ob ein Objekt / eine Objektinstanz eine Instanz einer bestimmten Klasse ist (in Java gibt es dafür wohl den Befehl "instance of")?

Vielen Dank schon mal...

Corpsman 20. Apr 2011 08:53

AW: Typ einer Objektinstanz prüfen
 
geht das nicht mit
Delphi-Quellcode:
is
also

Delphi-Quellcode:
if object is Tirgendwas then ..
das Problem dabei war glaub das es die Vorfahren auch als Tirgendwas erkennt, oder so...

s-off 20. Apr 2011 08:53

AW: Typ einer Objektinstanz prüfen
 
Probier es mal mit
Delphi-Quellcode:
ClassType
Zitat:

Zitat von Corpsman
das Problem dabei war glaub das es die Vorfahren auch als Tirgendwas erkennt, oder so...

Das Problem dabei ist, dass Du nicht prüfen kannst, ob eine Instanz von TLabel von TEdit abstammt.
Somit würde sich folgendes nicht linken lassen:

Delphi-Quellcode:
  [...]
  private
    oFoo : TLabel;
  [...]
  if oFoo is TEdit then
  [...]
Macht also keinen Sinn ;)

Neutral General 20. Apr 2011 09:00

AW: Typ einer Objektinstanz prüfen
 
Also entweder mit "is", wobei "is" auch "true" bei der Überprüfung auf Elternklassen liefert:

Delphi-Quellcode:
if Button is TButton then // true

if Button is TWinControl then //true

if Button is TObject then // true

if Button is TListbox then // false
oder per ClassType:

Delphi-Quellcode:
if Button.ClassType = TButton then // true

if Button.ClassType = TWinControl then // false

if Button.ClassType = TObject then // false

if Button.ClassType = TListbox then // false
Oder wenns unbedingt sein muss auch über den Classname. Ist aber meiner Meinung nach die hässlichste Methode!


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz