![]() |
Name des Objektes herausbekommen
Hallo Leute,
ich habe ein Programm in dem mehrere Objekte erstellt werden, welche von der selben Klasse abgeleitet sind. Jetzt rufen diese Objekte eine Klassenmethode auf. Wie kann ich innerhalb dieser Methode feststellen, von welchem Objekt diese Methode aufgerufen wird? Ich will nur den Namen des Objektes wissen. Gruß |
Re: Name des Objektes herausbekommen
Hallo ak1,
mir fällt im Moment nur folgendes ein...vielleicht hilft es dir.
Delphi-Quellcode:
Tschüß Markus
var Bezeichnung:String;
begin Bezeichnung:=(Sender as {TObject}).Name; end; |
Re: Name des Objektes herausbekommen
Hallo,
das mit Sender klappt nicht, da es sich hierbei nicht um eine Komponente handelt. Es ist eine selbstgeschriebene Klasse. Gruß |
Re: Name des Objektes herausbekommen
Zitat:
Also kann man aus der Klassenmethode nur eine "normale" Methode machen oder man muss auf den Objektnamen (TComponent.Name) verzichten. Dagegen ist der Zugriff auf den Klassennamen erlaubt (TObject.ClassName). |
Re: Name des Objektes herausbekommen
Hallo,
wie bekomme ich den Namen des Objektes bei einer "normalen" Methode heraus? |
Re: Name des Objektes herausbekommen
Zitat:
Aber ich denke mal, du steckst irgendwie in einer gedanklichen Sackgasse. :roll: Was willst du mit dem Namen eines Objekts, wenn du keine Vorkehrungen getroffen hast dem Objekt einen Namen zu geben ? |
Re: Name des Objektes herausbekommen
Hallo,
vielleicht verstehen wir uns falsch was eine Klassenmethode ist. Ich habe eine Form (TForm) in der ich mehrere Objekte vom Typ Testklasse erzeuge. Wenn ich jetzt über diese Objekte eine Methode dieser Klasse aufrufe, dann will ich, wenn diese Methode aufgerufen wird, innerhalb dieser Methode herausbekommen, welches Objekt die Methode gerade aufruft. Bei den Methoden handelt es sich um eine procedure die nicht mit class deklariert wird (class procedure testmethode) sondern ganz "normal" mit "procedure testmethode...". Ich hatte diese Methode vorher fälchlicherweise als Klassenmethode bezeichnet. Gruß |
Re: Name des Objektes herausbekommen
Wenn du in deiner Klasse keinen Namen definiert hast und diesen nicht explizit gesetzt hast ist dies nicht möglich.
Instanzen einfacher Klassen brauchen keinen Namen zu haben! |
Re: Name des Objektes herausbekommen
ok, vielleicht raffe ich es ja nicht, also ganz langsam, vieleicht habe ich ja einen Denkfehler:
in der Klasse Form1 (TForm) erzeuge ich 3 Objekte von Testklasse:
Code:
jetzt rufe ich die besagte Methode drei mal auf:
objekt1 :=TTestklasse.create;
objekt2 :=TTestklasse.create; objekt3 :=TTestklasse.create;
Code:
Innerhalb dieser testmethode gibt es eine Menge Berechnungen, jetzt möchte ich aber in Abhängigkeit vom Objekt einige Berechnungen in dieser Methode ausführen und andere wiederum nicht.
objekt1.testmethode;
objekt2.testmethode; objekt3.testmethode; Genau dafür muss ich wissen ob diese Methode von objekt1, objekt2 oder objekt3 aufgerufen wurde. Wie kann ich das machen? Mit self kann ich ja nur den Klassennamen ermitteln, was mir aber recht wenig nützt. Gruß |
Re: Name des Objektes herausbekommen
Was du da willst ist völlig ohne Bedeutung, du willst den Namen des Pointers wissen und daß wird auch nicht gehen.
Wenn du die Objekte in einer Liste hast, vergib einfach eine Property Name und setze diese nach dem Create, dann weißt du immer welches Objekt was gemacht hat, bzw. die kannst diese Eigentschaft dann abfragen. Was mir da gerade einfällt, du kannst die Pointer auf Gleichheit prüfen, dann hast du auch ein Ergenis. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:51 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 by Thomas Breitkreuz