Nazwa elementru Enumeration

Nazwa elementru Enumeration
F8
  • Rejestracja:prawie 18 lat
  • Ostatnio:prawie 5 lat
0

Mam sobie coś takiego:

Kopiuj
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:

Kopiuj
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.

Wodzu
  • Rejestracja:około 23 lata
  • Ostatnio:około 10 lat
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).


"as above, so below..all things come from the one. Now You are the victim, carried by the wind, then rooted to the ground. If You want, to learn the secrets..close Your eyes..."

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.