AGB  ·  Datenschutz  ·  Impressum  







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

Typen in Methoden erzeugen keine RTTI

Ein Thema von s.h.a.r.k · begonnen am 21. Mai 2011 · letzter Beitrag vom 22. Mai 2011
 
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#1

Typen in Methoden erzeugen keine RTTI

  Alt 21. Mai 2011, 16:28
Delphi-Version: XE
Manchmal frage ich mich echt, was sich die Entwickler des Compilers gedacht haben... Ich bin gerade durch Zufall auf ein eher komisches "Problem" gestoßen -- vielleicht sehe auch nur ich das als Problem an. Im einfachsten Fall sieht das jedenfalls so aus:
Delphi-Quellcode:
  procedure PrintEnumTypeName();
  type
    TProcedureEnum = (peOne, peTwo, peThree);
    TProcedureEnums = set of TProcedureEnum;
  var
    TI : PTypeInfo;
  begin
    TI := TypeInfo(TProcedureEnum);
    if (TI <> nil) then
      Writeln(TI^.Name);
  end;
Wenn ich das Compilieren will, meldet der Compiler mir folgende Meldung:
Code:
[DCC Fehler] EnumTypeInfoTest.dpr(50): E2134 Typ 'TProcedureEnum' besitzt keine Typinformation
Okay, kann man wahrlich anders schreiben, aber WOZU? Ich brauche diesen Typen hier nur temporär in dieser einen Methode. Wenn ich Typen innerhalb von Klassen oder Records definiere sind Typeinformationen vorhanden, nur hier nicht. Kennt jemand vielleicht den Grund dafür? Ich kann mir das auf Anhieb nicht so wirklich erklären.

Lustig wird das ganze aber dann, wenn man dieses Problem mit Generics kombiniert, denn dann erscheint zur Compilezeit keine Fehlermeldung, sondern nur zur Laufzeit. Und da dann zu merken, woher der Wind pfeift? Ich bin recht schnell darauf gekommen, da mein Code die Typeinformationen abfrage und entsprechend agiert.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)

Geändert von s.h.a.r.k (21. Mai 2011 um 16:31 Uhr)
  Mit Zitat antworten Zitat
 


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 12:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz