AGB  ·  Datenschutz  ·  Impressum  







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

Name einer Klasse "direkt" erhalten

Ein Thema von Helmi · begonnen am 9. Apr 2012 · letzter Beitrag vom 9. Apr 2012
Antwort Antwort
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#1

Name einer Klasse "direkt" erhalten

  Alt 9. Apr 2012, 09:32
Hallo,

gibt es eine Möglichkeit, und falls ja welche, um an den Namen einer Klasse zu gelangen?

z. B.: Ich habe eine Klasse TMyClass = packed class (TObject) . Ich würde nun gerne den Namen ermitteln.
Also in dem Falle "TMyClass".

Nun könnte ich es einfach machen und eine Varible definieren und dann mittels ClassName den Namen ermitteln. Also so:
Delphi-Quellcode:
var
  MyClass: TMyClass;

begin
  S := MyClass.ClassName;
end;
Nur gibts auch etwas um auf die Zwischenvariable verzichten zu können? Also irgendwas in der Art:
Delphi-Quellcode:
begin
  S := GetClassName(TMyClass);
end;
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.149 Beiträge
 
Delphi 12 Athens
 
#2

AW: Name einer Klasse "direkt" erhalten

  Alt 9. Apr 2012, 09:39
Delphi-Referenz durchsuchenTMyClass.ClassName?

Das ist ein Class Property eine Class Function.



Du hast diese Variable nicht initialisiert ... ich hoffe du freust dich über die Exception. (bei einer lokalen Variable)
Zitat:
Delphi-Quellcode:
var
  MyClass: TMyClass;

begin
  S := MyClass.ClassName;
end;
Und ja, das Andere geht auch
Delphi-Quellcode:
function GetClassName(C: TClass): string;
begin
  Result := C.ClassName;
end;
oder wie währe es mit S := TRttiContext.Create.GetType(TMyClass).Name; ?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 9. Apr 2012 um 09:46 Uhr) Grund: Funktion und nicht Property :oops:
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Name einer Klasse "direkt" erhalten

  Alt 9. Apr 2012, 09:51
Du hast diese Variable nicht initialisiert ... ich hoffe du freust dich über die Exception. (bei einer lokalen Variable)
Das war nur als Beispiel - ich habs so nie im Code gehabt. Bislang hab ich den Klassen-Namen manuell als String geschrieben. Das wollt ich aber nicht mehr.

Und ja, das Andere geht auch
Delphi-Quellcode:
function GetClassName(C: TClass): string;
begin
  Result := C.ClassName;
end;
Auf diese Lösung bin ich dann auch gekommen, nachdem ich deinen Post gelesen habe (bevor ich sah, dass du ein Edit geschrieben hast). Das geht auch.

oder wie währe es mit S := TRttiContext.Create.GetType(TMyClass).Name; ?
Neeeeeeeee - Wie schaut denn das aus? - das ist viel zu übertrieben lang. Lieber ne kleine Function - trotzdem Danke für die zusätzliche Möglichkeit
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.149 Beiträge
 
Delphi 12 Athens
 
#4

AW: Name einer Klasse "direkt" erhalten

  Alt 9. Apr 2012, 09:55
Hoffentlich ist dir die erste Zeile aufgefallen.

*nur zur Sicherheit nochmal nachfrag*


Ups, die alte RTTI vergessen.
Delphi-Quellcode:
uses TypInfo;

S := UTF8ToString(PTypeInfo(TypeInfo(TStrings)).Name); // vor D2009 könnte man das UTF8ToString auch weglassen

Ich hab nie verstanden, warum das TypeInfo nicht gleich PTypeInfo zurückgibt, sondern nur 'nen blöden Pointer..
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 9. Apr 2012 um 09:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#5

AW: Name einer Klasse "direkt" erhalten

  Alt 9. Apr 2012, 09:58
Hoffentlich ist dir die erste Zeile aufgefallen.
Man möge mir bitte den Sinne des ersten Zeile verdeutlichen!

Ich weiss grad nicht was du meinst
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.149 Beiträge
 
Delphi 12 Athens
 
#6

AW: Name einer Klasse "direkt" erhalten

  Alt 9. Apr 2012, 10:01
Delphi-Quellcode:
S := KlassenVariable.ClassName;

S := TKlasse.ClassName;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#7

AW: Name einer Klasse "direkt" erhalten

  Alt 9. Apr 2012, 10:03
Delphi-Quellcode:
S := KlassenVariable.ClassName;

S := TKlasse.ClassName;
jo - Danke! Es fiehlet mir ins Auge
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:42 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