VB6 - Zugriff auf Objektnamen

Hallo

stellt euch folgende Situation vor:

ich habe eine Klasse in meinem Projekt, sie heißt „meineklasse“
nun instanziere ich sie im deklarationsbereich meiner Form mit
public meinname as meineklasse
und in einer meiner Subs mit
set meinname = new meineklasse

Jetzt zu meiner Frage:

Wie kann ich nun den Namen, den sich ein eventueller Programmierer für das neu erstellte Objekt ausgedacht hat, später wieder abfragen?

Gruß

Tschapajew

Hallo,

gar nicht :smile:
Wozu sollte man das wissen?
Was hast du denn vor?

MfG Alex

Ich schreibe an einer Engine für Adventure Games und dort insbesondere an einer Klasse für Räume. Zur zeit ist es so, dass ein neuer Raum mit
public badezimmer as vbroom
im deklarationsbereich und mit
set badezimmer = new vbroom
badezimmer.setname „badezimmer“
inizialisiert wird.
Ich habe in die Klasse vbroom eine setname Metode eingebaut, die in der Klasse in einer Variable speichert, wie der neue Raum heißt. Das finde ich aber zu umständlich. Wenn bei der Instanzierung bereits der Raumname als Objektname mitgegeben respektive angegeben wird, dann soll die Klasse diese Variable von allein mit ihrem Objektnamen Füllen. Es ist einfach nicht praktisch, erst
set badezimmer = new vbroom
und dann zwecks Namensübergabe
badezimmer.setname „Badezimmer“
coden zu müssen.

'Gruß

Tschapajew

Hallo Tschapajew,

Ich schreibe an einer Engine für Adventure Games und dort
insbesondere an einer Klasse für Räume. Zur zeit ist es so,
dass ein neuer Raum mit
public badezimmer as vbroom
im deklarationsbereich und mit
set badezimmer = new vbroom
badezimmer.setname „badezimmer“
inizialisiert wird.

Ok, das schaut soweit gut aus!

Ich habe in die Klasse vbroom eine setname Metode eingebaut,
die in der Klasse in einer Variable speichert, wie der neue
Raum heißt. Das finde ich aber zu umständlich. Wenn bei der
Instanzierung bereits der Raumname als Objektname mitgegeben
respektive angegeben wird, dann soll die Klasse diese Variable
von allein mit ihrem Objektnamen Füllen. Es ist einfach nicht
praktisch, erst
set badezimmer = new vbroom
und dann zwecks Namensübergabe
badezimmer.setname „Badezimmer“
coden zu müssen.

Ja das ist nun aber mal VB. Konstruktoren die man Überladen kann wie bei NET gibt es leider unter VB bis zur Version 6 leider nicht! Ansonsten waere das kein Thema.

Aber schau einmal.
Klassen kann man wunderbar als Datenspeicher benutzen :wink: Wie das geht den Weg hast du ja selbst schon gefunden :smile:

ABER normal verwendet man Klassen eigentlich dazu das man Objecte darin verwaltet. In deinem Bsp. waere es ja ein Badezimmer.
Hier lohnt sich eine Klasse nur! wenn es mehrere Baderaeume gibt!
Und genau in dem Falle koennen die Baderaeume unterschiedliche Namen haben. In dem Falle würde sich eine Eigenschaft RaumName anbieten.

Kennst du den Unterschied zwischen Methoden / Ereignissen und Eigenschaften?

Ereignisse werden ausgelöst ( Event)
Methoden erledigen etwas
Eigenschaften ( verwalten Daten)

Im Bsp. Von einer Klasse PKW waere zum Bsp

Gas geben -> Methode
Ereignis -> Temp aendert sich
Eigenschaft -> Farbe Rot

In deinem Falle würde sich daher anbieten eine Eigenschaft zu implementieren. Der Eigenschaft kannst du ja sagen das sie lese und Schreibrechte haben soll :smile:

Wie das geht, weisst du?

Aber nochmal zurueck zu deinem Problem.
Wenn die Klasse vbRoom immer den selben Namen traegt, dann kannst du ihr einen StandardWert im Ereignis Class_Initialize zuweisen.

Aber mal was anderes, was mir adhock einfaellt.
Du willst sicherlich mehr wie nur Badezimmer verwalten oder?
Ist es da nicht eine Überlegung wert sich eine Klasse Raum anzulegen und dann noch andere Klassen alla Badezimmer, Wohnzimmer, Schlafzimmer etc. davon abzuleiten?

Ich mein, ein Badezimmer hat zum Bsp. eine Dusche und ein Wohnzimmer dagegen zum Bsp. ein Kamin :wink:

MfG Alex

Hallo und guten Morgen

gibt es denn keine andere Möglichkeit, an den Objektnamen heran zu kommen? Ich bräuchte diese Funktionalität um jeden Preis. Mittlerweile hängt der Erfolg des Projektes sogar davon ab.

Gruß

Tschapajew

Hallo Tschapajew,

also eigentlich weiss ich auf das meiste eine Lösung. Aber diesmal bin ich mit meinem Latein am Ende.

Wie gross ist denn dein Project mittlerweile schon?
Könntest du mal den Zugriff auf die Klasse posten und dann noch einmal die Klasse.
Vielleicht kann man da noch fix was umstricken so das es läuft!
Mehr kann ich Dir leider nicht anbieten!

MfG Alex

Hallo Tschapajew,

was mir gerade noch einfaellt, ist wenn du eh eine neue Sprache lernst, warum dann VB6 und nicht gleich .NET ?
Da könntest du dein Project direkt importieren und dann den Klassen Konstruktor erweitern und dann waere alles kein Problem :smile:

Ok, das ein oder andere muesste man dann auch wieder anpassen. Aber der Aufwand haelt sich in Grenzen, je nachdem wie weit dein Project schon ist :smile:

MfG Alex