Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Instanzname innerhalb einer Klasse bekommen
jojo-sp - Fr 09.07.10 16:57
Titel: Instanzname innerhalb einer Klasse bekommen
Moinsen,
ich hätte da mal ne Frage, weil ich wie der Ochs vorm Berge hier stehe (und Schwitze, weil das Büro die Temperatur einer Sauna erreicht hat)...
Ich habe eine Klasse. Innerhalb der Klasse sollen Daten in einer ini Datei gespeichert werden. Dazu möchte ich den Namen der Klasseninstanz verwenden, da mit der selben Klasse mehrere Objekte erzeugt werden.
Ganz grob der Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| Class1:= TMyClass.Create; Class2:= TMyClass.Create; ..
procedure TMyClass.SaveIni; begin ini.WriteString(<Klassenname>,xyz,ValueString); end; |
Für <Klassenname> möchte ich jetzt Class1 bzw. Class2 wissen. Natürlich kann ich das auch beim Create manuell in ne Variable schreiben, aber warum einfach wenns auch schwer geht...???
Vielleicht ist die Lösung gerade so einfach, dass ich auch nicht drauf komme :-)
Gruß
Hidden - Fr 09.07.10 17:02
Hi,
Ich meine, beim durchblättern der Methoden auch schon die Eigenschaft 'ClassName' gesehen zu haben. Wie sieht das bei dir aus? ;)
E: In der Tat
Delphi-Quelltext
1: 2: 3: 4:
| class function TObject.ClassName: string; begin Result := UTF8ToString(PShortString(PPointer(Integer(Self) + vmtClassName)^)^); end; |
lg,
ASMFreak - Fr 09.07.10 17:02
ist nicht der Member ClassName einer Klasse das, was Du brauchts?
Gruß, Trutz
mkinzler - Fr 09.07.10 17:03
Und der Namen der Instanz, so er denn existiert in .Name
jojo-sp - Fr 09.07.10 17:07
Schön wärs ja mit ClassName, aber die gibt mir nur den Namen der Klasse also TMyClass als String zurück und nicht Class1 oder Class2...
Hidden - Fr 09.07.10 17:11
Oh, du wolltest den Namen der Instanz? Das geht definitiv nicht.
Ich würde der Speichern- und der Laden-Methode jeweils einen Parameter verpassen - const aSaveName: String.
lg,
mkinzler - Fr 09.07.10 17:11
Welcher Referenz(variable) du das Objekt zugewiesen hast, kann das Objekt auch nicht wissen
ASMFreak - Fr 09.07.10 17:11
Moment, ich glaube, ich habe Dich missverstanden. Du willst nicht "TMyClass" wissen sondern Class1 und Class2!
Wie soll das gehen? Class1 und Class2 sind bloß zwei Namen für Speicherstellen, an denen die Adressen der Instanzen von TMyClass stehen. Wie soll nun eine Instanz anhand seiner Speicheradresse feststellen, wie der NAme ist, den der Programmierer verwendet hat, um dem Compiler die Adresse mitzuteilen, an der der die Instanz ablegen soll?
Oder hab ich Dich nochmals falsch verstanden?
Gruß, Trutz
jojo-sp - Fr 09.07.10 17:18
@ ASMFreak: Jetzt hast du mich richtig verstanden, aber es wundert mich, dass du das knallen von meiner Hand an der Stirn nicht hören konntest :-) Wieso ich auf die Idee gekommen bin, dass das gehen könnte, weiß ich nicht. :-D
ASMFreak - Fr 09.07.10 17:23
Hab ich doch :wink:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!