Autor Beitrag
jojo-sp
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 317

Windows XP Prof, Vista Ultimate & Home Premium, Windows 7
Delphi 7 Enterprise, Delphi 2009
BeitragVerfasst: Fr 09.07.10 16:57 
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:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
// Es werden mehrere Objekte aus TMyClass erzeugt
  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ß

_________________
Ist der Ruf erst ruiniert, lebts sich gänzlich ungeniert...
Wilhelm Busch (1832 - 1908)
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: 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
ausblenden Delphi-Quelltext
1:
2:
3:
4:
class function TObject.ClassName: string;
begin
  Result := UTF8ToString(PShortString(PPointer(Integer(Self) + vmtClassName)^)^);
end;


lg,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)


Zuletzt bearbeitet von Hidden am Fr 09.07.10 17:03, insgesamt 1-mal bearbeitet
ASMFreak
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 53
Erhaltene Danke: 9



BeitragVerfasst: Fr 09.07.10 17:02 
ist nicht der Member ClassName einer Klasse das, was Du brauchts?

Gruß, Trutz

_________________
Und aus dem Chaos sprach eine Stimme zu mir: Lächle und sei froh, es könnte schlimmer kommen.
Und ich lächelte und ich war froh – und es kam schlimmer!
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Fr 09.07.10 17:03 
Und der Namen der Instanz, so er denn existiert in .Name

_________________
Markus Kinzler.
jojo-sp Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 317

Windows XP Prof, Vista Ultimate & Home Premium, Windows 7
Delphi 7 Enterprise, Delphi 2009
BeitragVerfasst: 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...

_________________
Ist der Ruf erst ruiniert, lebts sich gänzlich ungeniert...
Wilhelm Busch (1832 - 1908)
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: 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,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Fr 09.07.10 17:11 
Welcher Referenz(variable) du das Objekt zugewiesen hast, kann das Objekt auch nicht wissen

_________________
Markus Kinzler.
ASMFreak
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 53
Erhaltene Danke: 9



BeitragVerfasst: 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

_________________
Und aus dem Chaos sprach eine Stimme zu mir: Lächle und sei froh, es könnte schlimmer kommen.
Und ich lächelte und ich war froh – und es kam schlimmer!
jojo-sp Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 317

Windows XP Prof, Vista Ultimate & Home Premium, Windows 7
Delphi 7 Enterprise, Delphi 2009
BeitragVerfasst: 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

_________________
Ist der Ruf erst ruiniert, lebts sich gänzlich ungeniert...
Wilhelm Busch (1832 - 1908)
ASMFreak
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 53
Erhaltene Danke: 9



BeitragVerfasst: Fr 09.07.10 17:23 
Hab ich doch :wink:

_________________
Und aus dem Chaos sprach eine Stimme zu mir: Lächle und sei froh, es könnte schlimmer kommen.
Und ich lächelte und ich war froh – und es kam schlimmer!