Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Fehlermeldung "besitzt keine Typinformation" bei enum (https://www.delphipraxis.net/210424-fehlermeldung-besitzt-keine-typinformation-bei-enum.html)

Friday 22. Apr 2022 10:23

Delphi-Version: 11 Alexandria

Fehlermeldung "besitzt keine Typinformation" bei enum
 
Hallo,
mit der Compilereinstellung "Laufzeittypinformationen ausgeben" := true, kommt die Fehlermeldung "Typ 'TConvJob' besitzt keine Typinformationen"

Delphi-Quellcode:
type
  TConvJobType = (cjUpdate, cjApply, cjActivate, cjDeactivate, cjCopied);
  TConvJob = set of cjUpdate..cjCopied;
Der Fehler wird angezeigt in der vorletzten Zeile ("implementation") meiner "uIntf.pas" Datei, in der nur Interfaces definiert werden.
Unter anderem interfaces die auch den Typ TConvJob nutzt:
Delphi-Quellcode:
  IJobMng = interface(IInterface)
  ['{7C645C7E-2523-453D-AB47-056AE17FD449}']
    function GetJobsDone: TConvJob;
    procedure SetJobsDone(ThisVal: TConvJob);
  end;
danke für jede Hilfe

peterbelow 22. Apr 2022 10:35

AW: Fehlermeldung "besitzt keine Typinformation" bei enum
 
Zitat:

Zitat von Friday (Beitrag 1504949)
Hallo,
mit der Compilereinstellung "Laufzeittypinformationen ausgeben" := true, kommt die Fehlermeldung "Typ 'TConvJob' besitzt keine Typinformationen"

Delphi-Quellcode:
type
  TConvJobType = (cjUpdate, cjApply, cjActivate, cjDeactivate, cjCopied);
  TConvJob = set of cjUpdate..cjCopied;
Der Fehler wird angezeigt in der vorletzten Zeile ("implementation") meiner "uIntf.pas" Datei, in der nur Interfaces definiert werden.
Unter anderem interfaces die auch den Typ TConvJob nutzt:
Delphi-Quellcode:
  IJobMng = interface(IInterface)
  ['{7C645C7E-2523-453D-AB47-056AE17FD449}']
    function GetJobsDone: TConvJob;
    procedure SetJobsDone(ThisVal: TConvJob);
  end;
danke für jede Hilfe

In Delphi gibt es leider zwei unterschiedliche Versionen von RTTI, die alte (siehe unit system.typinfo) gibt es schon seit Delphi 1, die neue (extended RTTI, mehr an .NET Reflection angelehnt) ist wesentlich neuer. Der von Dir erwähnte Compilerschalter beeinflußt nur die Erzeugung von extended RTTI, für enumerated types wird aber noch die alte RTTI verwendet, und die wird nur erzeugt, wenn sie auch irgendwo verwendet wird. Das passiert z. B. wenn man den enum-Typen für eine published property verwendet, oder irgendwo die TypeInfo-Funktion für ihn aufruft. Versuch mal ein
Delphi-Quellcode:
type
{$TYPEINFO ON}
TConvJobType = (cjUpdate, cjApply, cjActivate, cjDeactivate, cjCopied);
Vielleicht hilft das...

BerndS 22. Apr 2022 10:37

AW: Fehlermeldung "besitzt keine Typinformation" bei enum
 
versuche es mal so:
Delphi-Quellcode:
  TConvJob = set of TConvJobType;

Friday 22. Apr 2022 11:28

AW: Fehlermeldung "besitzt keine Typinformation" bei enum
 
danke für die kompetenten Antworten. Tatsächlich hat
Delphi-Quellcode:
TConvJob = set of TConvJobType;
ausgereicht.

BerndS 22. Apr 2022 12:13

AW: Fehlermeldung "besitzt keine Typinformation" bei enum
 
Ich persönlich verwende lieber diese Schreibweise:
Delphi-Quellcode:
type
  TConvJob = (cjUpdate, cjApply, cjActivate, cjDeactivate, cjCopied);
  TConvJobs = set of TConvJob;
Anhand des 's' am Ende sehe ich gleich, das es ein set ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:53 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