|
@@ -0,0 +1,51 @@
|
|
|
+program tw1331;
|
|
|
+
|
|
|
+{$mode objfpc}
|
|
|
+
|
|
|
+uses Classes, SysUtils, TypInfo, uw1331;
|
|
|
+
|
|
|
+type
|
|
|
+ DummyEnum1 = (tr1,tr2);
|
|
|
+ DummyEnum2 = tr1..tr2;
|
|
|
+
|
|
|
+ DummyClass = class(TPersistent)
|
|
|
+ private
|
|
|
+ FMyDummyEnum1:DummyEnum1;
|
|
|
+ FMyDummyEnum2:DummyEnum2;
|
|
|
+ FMyDummyEnum3:DummyEnum3;
|
|
|
+ FMyDummyEnum4:DummyEnum4;
|
|
|
+ published
|
|
|
+ property MyDummyEnum1:DummyEnum1 read FMyDummyEnum1 write FMyDummyEnum1;
|
|
|
+ property MyDummyEnum2:DummyEnum2 read FMyDummyEnum2 write FMyDummyEnum2;
|
|
|
+ property MyDummyEnum3:DummyEnum3 read FMyDummyEnum3 write FMyDummyEnum3;
|
|
|
+ property MyDummyEnum4:DummyEnum4 read FMyDummyEnum4 write FMyDummyEnum4;
|
|
|
+ end;
|
|
|
+
|
|
|
+var Dummy1:DummyClass;
|
|
|
+ List:PPropList;
|
|
|
+ Count,Index,I:integer;
|
|
|
+ EnumType:PTypeInfo;
|
|
|
+
|
|
|
+begin
|
|
|
+ // create a dummyclass instance
|
|
|
+ Dummy1:=DummyClass.Create;
|
|
|
+ // get property list
|
|
|
+ Count:=GetTypeData(DummyClass.ClassInfo)^.Propcount;
|
|
|
+ GetMem(List,Count * SizeOf(Pointer));
|
|
|
+ GetPropInfos(DummyClass.ClassInfo,List);
|
|
|
+ Index:=Count-1;
|
|
|
+ while (Index>=0) do begin
|
|
|
+ EnumType:=List^[Index]^.PropType;
|
|
|
+ if EnumType^.Kind=tkEnumeration then begin
|
|
|
+ // print all enumeration types
|
|
|
+ writeln('PropertyName=',EnumType^.Name);
|
|
|
+ with GetTypeData(EnumType)^ do
|
|
|
+ // write all possible values for this type
|
|
|
+ for I := MinValue to MaxValue do
|
|
|
+ writeln(I,': ''',GetEnumName(EnumType, I),'''');
|
|
|
+ end;
|
|
|
+ dec(Index);
|
|
|
+ end;
|
|
|
+ FreeMem(List);
|
|
|
+ Dummy1.Free;
|
|
|
+end.
|