Nazwa elementru Enumeration

0

Mam sobie coś takiego:

WIN_ID = (
    WID_Base = $2000,
    WID_DeskTop,
    WID_OtherFuc,
    WID_DeskTopAni,
    WID_PowerOffWin,
    WID_DeskLittle1,
    WID_DeskLittle2,
    ...
    WID_HoldOnFile3);

I chcę dobrać się do nazw tych składników tak by móc operować na nich w postaci String

W internecie jest niby pełno informacji o tym jak to zrobić, to sposób który znalazłem:

MyString := GetEnumName(TypeInfo(WIN_ID), WID_DeskTop);

Jednak problem w tym że to działa tylko w wypadku gdy żaden z elementów powyższych definicji nie ma przypisanej wartości. Gdy jakikolwiek składnik ma zdefiniowaną wartość, kod się nie chcę kompilować i dostaje komunikat od funkcji TypeInfo: "Type 'WIN_ID' has no type info".

Ale jak widzicie, pierwszy składnik ma wartość 0x2000, i dalej po kolei też niektóre elementy mają przypisane swoje wartości. Te wartości muszą być przypisane, gdyż ten typ danych potrzebny mi jest do deasemblacji pliku binarnego Firmware mp4 - taki jest cel mojego programu.

Więc jaki jest inny sposób na wyciągnięcie tych nazw, lub może zmodyfikowanie funkcji TypeInfo tak by nie wyskakiwała z tym głupim błędem?

Pomocy.

0

Witam.

Mozesz to obejsc tworzac sobie tabele do ktorej bedziesz zagladal w poszukiwaniu odpowiedniej wartosci. Wiem, ze to uciazliwe ale inaczej sie chyba nie da.

Czyli w definicji WIN_ID nie wstawiaj wartosci do elementow, lecz pobieraj te wartosci w ten sposob:

WIN_ID_VALUE = WIN_ID_VALUES[WID_Base];

czyli WID_Base jest indeksem do tabeli wartosci oraz zachowujesz mozliwosc generowania stringa z tego elementu(WID_Base).

1 użytkowników online, w tym zalogowanych: 0, gości: 1