AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Name des Objektes herausbekommen

Ein Thema von ak1 · begonnen am 13. Apr 2004 · letzter Beitrag vom 14. Apr 2004
Antwort Antwort
Seite 1 von 2  1 2      
ak1

Registriert seit: 12. Okt 2003
243 Beiträge
 
#1

Name des Objektes herausbekommen

  Alt 13. Apr 2004, 17:20
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ß
  Mit Zitat antworten Zitat
Markus K.

Registriert seit: 26. Jan 2004
Ort: Halle
346 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Name des Objektes herausbekommen

  Alt 13. Apr 2004, 17:35
Hallo ak1,
mir fällt im Moment nur folgendes ein...vielleicht hilft es dir.
Delphi-Quellcode:
var Bezeichnung:String;
begin
     Bezeichnung:=(Sender as {TObject}).Name;
end;
Tschüß Markus
  Mit Zitat antworten Zitat
ak1

Registriert seit: 12. Okt 2003
243 Beiträge
 
#3

Re: Name des Objektes herausbekommen

  Alt 13. Apr 2004, 17:41
Hallo,
das mit Sender klappt nicht, da es sich hierbei nicht um eine Komponente handelt. Es ist eine selbstgeschriebene Klasse.

Gruß
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Name des Objektes herausbekommen

  Alt 13. Apr 2004, 17:42
Zitat von ak1:
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.
Das ist nicht möglich, da der Klassenmethode kein versteckter Self-Zeiger mitgegeben wurde.
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).
Andreas
  Mit Zitat antworten Zitat
ak1

Registriert seit: 12. Okt 2003
243 Beiträge
 
#5

Re: Name des Objektes herausbekommen

  Alt 13. Apr 2004, 17:50
Hallo,

wie bekomme ich den Namen des Objektes bei einer "normalen" Methode heraus?
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

Re: Name des Objektes herausbekommen

  Alt 13. Apr 2004, 17:55
Zitat von ak1:
wie bekomme ich den Namen des Objektes bei einer "normalen" Methode heraus?
Von TComponent ableiten und dann mit Self.Name darauf zugreifen.
Aber ich denke mal, du steckst irgendwie in einer gedanklichen Sackgasse.
Was willst du mit dem Namen eines Objekts, wenn du keine Vorkehrungen getroffen
hast dem Objekt einen Namen zu geben ?
Andreas
  Mit Zitat antworten Zitat
ak1

Registriert seit: 12. Okt 2003
243 Beiträge
 
#7

Re: Name des Objektes herausbekommen

  Alt 13. Apr 2004, 18:14
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ß
  Mit Zitat antworten Zitat
Touchdown

Registriert seit: 17. Feb 2003
227 Beiträge
 
#8

Re: Name des Objektes herausbekommen

  Alt 13. Apr 2004, 18:23
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!
function getallfornothing: TGoldesel;
begin
result := TGoldesel.create;
end;
  Mit Zitat antworten Zitat
ak1

Registriert seit: 12. Okt 2003
243 Beiträge
 
#9

Re: Name des Objektes herausbekommen

  Alt 13. Apr 2004, 21:19
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:
objekt1 :=TTestklasse.create;
objekt2 :=TTestklasse.create;
objekt3 :=TTestklasse.create;
jetzt rufe ich die besagte Methode drei mal auf:

Code:
objekt1.testmethode;
objekt2.testmethode;
objekt3.testmethode;
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.
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ß
  Mit Zitat antworten Zitat
Touchdown

Registriert seit: 17. Feb 2003
227 Beiträge
 
#10

Re: Name des Objektes herausbekommen

  Alt 13. Apr 2004, 22:08
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.
function getallfornothing: TGoldesel;
begin
result := TGoldesel.create;
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:04 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