AGB  ·  Datenschutz  ·  Impressum  







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

TypeInfo ermitteln

Ein Thema von stahli · begonnen am 27. Dez 2007 · letzter Beitrag vom 27. Dez 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#1

TypeInfo ermitteln

  Alt 27. Dez 2007, 17:34
Hi,

ich greife auf ein Enum-Property zu und weiß nicht, wie ich die zugehörige TypeInfo ermitteln kann...

Delphi-Quellcode:
    if PropIsType(DCustom, DataName, tkEnumeration) then // Property ist Enum
    begin
      I := GetEnumValue(TypeInfo(???), GetPropValue(DCustom, DataName)); // Wert ist bekannt, aber nicht der Typ
Kann mir wer helfen?

Stahli
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: TypeInfo ermitteln

  Alt 27. Dez 2007, 17:36
Nimm doch "TypeInfo"!
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: TypeInfo ermitteln

  Alt 27. Dez 2007, 17:42
Ja, war Schreibfehler von mir
Ich meinte TypeInfo(???).
Aber von was?


edit...
Ich will das mal konkretisieren:

In einer Unit, die Funktionen für den speziellen Aufzaählungstyp enthält, kann ich das so lösen:
  W.WriteString(GetEnumName(TypeInfo(TStateType), Ord(StateType))); Nun suche ich eine generelle Möglichkeit für ein Property irgendeines Aufzählungstyps.
Ich habe Zugriff auf das Property und den String des Aufzählungswertes.
Ich finde aber keine Möglichkeit, den Aufzählungstyp zu ermitteln (hier: TStateType)
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: TypeInfo ermitteln

  Alt 27. Dez 2007, 18:56
Das geht so nicht (und falls doch, dann würde mich das auch dringend interessieren ).
TypeInfo ist keine Funktion o.ä., sondern wird während des Compilierens einfach durch eine Adresse ersetzt.
Du musst dir diese Funktion eher selber simulieren.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: TypeInfo ermitteln

  Alt 27. Dez 2007, 19:05
Sehe ich das richtig, dass du eine Instanz und den Property-Namen hast? Nimm doch GetPropInfo und lies aus dem Rückgabewert die Type-Information aus.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: TypeInfo ermitteln

  Alt 27. Dez 2007, 19:16
meine Versuche führen zu folgenen Fehlern:

I := GetEnumValue(TypeInfo(GetPropInfo(DCustom, DataName)), GetPropValue(DCustom, DataName));
-> Standardfunktion TYPEINFO erwartet einen Typbezeichner

I := GetEnumValue(TypeInfo(GetPropInfo(DCustom, DataName).PropType), GetPropValue(DCustom, DataName));
-> Standardfunktion TYPEINFO erwartet einen Typbezeichner

I := GetEnumValue(GetPropInfo(DCustom, DataName).PropType, GetPropValue(DCustom, DataName));
-> Inkompatible Typen: "PTypeInfo" und "PPTypeInfo"

Ich weiß eben nicht, wie ich in meinem Fall den Typ "TStateType" herausfinde

Stahli
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: TypeInfo ermitteln

  Alt 27. Dez 2007, 19:19
Mit dem letzten Versuch hast du es doch schon fast: Du hast nur noch ein P zu viel, also einmal dereferenzieren.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: TypeInfo ermitteln

  Alt 27. Dez 2007, 19:24
Zeiger sollten verboten werden!
Wie mach ich´s richtig?
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: TypeInfo ermitteln

  Alt 27. Dez 2007, 19:25
Wie gesagt, einmal dereferenzieren, also ein Dach ^ hinter .PropType
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: TypeInfo ermitteln

  Alt 27. Dez 2007, 19:28
Also TypeInfo geht wie gesagt nicht. Da TypeInfo direkt einen Typbezeichner erwartet und nix anderes, keine Variablen und auch keine Ergebnisse von Funktionen.
Was willst du genau erreichen? Also was ist Dcustom....
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  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 03:58 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