Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi WriteComponent ignoriert eigenes Enum (https://www.delphipraxis.net/193556-writecomponent-ignoriert-eigenes-enum.html)

pustekuchen 15. Aug 2017 07:09

Delphi-Version: 10 Seattle

WriteComponent ignoriert eigenes Enum
 
Hallo zusammen,

mir ist gestern etwas aufgefallen und wollte mal nachfragen, ob das Verhalten richtig ist oder ob es sich hier sogar um einen Fehler handelt.

Ich habe einen eigenes Enum
Delphi-Quellcode:
TMyEnum = (meTest1 = 1, meTest2 = 2);

Und einen simple Klasse die von TComponent abgeleitet ist und eine property enthält, die von meinem Enumtypen TMyEnum ist.

Nun habe ich TFileStream.WriteComponent genutzt, um die published properties der Klasse in einer Datei zu speichern.

Jedoch wird diese property ignoriert und nicht mit in die Datei geschrieben. Ändere ich das Enum wie folgt ab:
Delphi-Quellcode:
TMyEnum = (meUnknown = 0, meTest1 = 1, meTest2 = 2);
So wird auch diese Property gespeichert.

LG pustekuchen

Fritzew 15. Aug 2017 07:55

AW: WriteComponent ignoriert eigenes Enum
 
Das ist so Dokumentiert.
http://docwiki.embarcadero.com/RADSt...umerated_Types
Diese Art von Enums sollten eigentlich auch bloss für die Kommunikation nach aussen, (Dlls, API's) verwendet werden.

himitsu 15. Aug 2017 10:14

AW: WriteComponent ignoriert eigenes Enum
 
Zitat:

Zitat von Fritzew (Beitrag 1378749)
Das ist so Dokumentiert.

Zitat:

whereas enumerated constants with a specific value, such as the following, do not have RTTI:
Stimmt nicht ganz.
Der Typ hat RTTI-Infos und das muß er auch, aber in der TypeInfo (RTTI) ist die Liste der "Namen" leer.

Dort stehen nur die Namen von 0 bis x und solche Listen enden mit #0#0, bzw. mit einem leeren Wert
Delphi-Quellcode:
''
, was blöde ist, wenn zwischendrin Werte fehlen würden, die auch nur einen
Delphi-Quellcode:
''
ergäben.
Hatte Borland/CodeGear/Embarcadero zwar schon zwei Mal vorgeschlagen das einfach mit "Dummy"-Werten aufzufüllen, wie z.B.
Delphi-Quellcode:
'*'
, aber auf mich hört ja Niemand.

pustekuchen 15. Aug 2017 10:58

AW: WriteComponent ignoriert eigenes Enum
 
Danke für die Hinweise. Das erklärt es dann :)
Vielen Dank


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