mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-08 15:49:04 +02:00
52 lines
1.4 KiB
ObjectPascal
52 lines
1.4 KiB
ObjectPascal
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.
|