Skocz do zawartości

[Delphi] Listowanie enuma


Force

Polecane posty

Czasami Toster piszę, że na coś wpadł i że się tym chwali aby inni nie męczyli się, to ja tak też robię :P

Otóż opisze jaki problem miałem (czyt. skopiuje se ze swojej strony):

używam rtti do pobierania zmiennych z klasy, dowolnego typu (w sumie to: stringi, klasy, integery i enumy) i jak mam, że zmienna jest tkEnumeration to mnie ciekawiło jak wylistować jakie może przyjąć wartości ten enuma. Zajęło mi to ponad 2 tygodnie (choć większość czasu przeleżałem) i znalazłem tylko jak wylistować jak znam typ enuma i pobieram z niego Low i High, ale nie o to chodziło, tak czy siak wytrzasnąłem jakoś jak to zrobić, oto kod:

KOD

var

PropInfo : PPropInfo; // To PropInfo naszej zmiennej z klasy

TypeData: PTypeData;

PickList : TStringList;// Tu będzie wszystko wylistowane

(..)

TypeData := GetTypeData(PropInfo^.PropType^);

for j := TypeData2.MinValue to TypeData2.MaxValue do

PickList.Add(GetEnumName(TypeData^.BaseType^,j));

 

Niby da się domyślić, ale mi zajęło trochę czasu, zwłaszcza, że ma być BaseType, a nie np. CompType jak często widziałem (przy ComType są errory przy wykonaniu). Takie małe coś, ale zrobiło mi dużo roboty, to aby inni się nie męczyli :)

Baza tysięcy lotnisk: http://airportsbase.com

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...