2009-06-24 9 views
5

Jestem zobowiązany do utrzymywania kilku aplikacji VB6, i mam do czynienia z dziwnym problemem, jeśli chodzi o nazwy wyliczeniowe. Sposób, w jaki powinna działać Intellisense w VB6, polega na tym, że jeśli moja nazwa zmiennej jest określona jako, powiedzmy, Dim Abraxis jako String, a ja wpisuję abraxis podczas kodowania, IDE zmienia ją na Abraxis w locie, gdy opuszczam słowo. Jednak odkryłem, że jeśli mam wyliczenie skonfigurować tak, na przykład:VB6 IDE zmienia przypadek moich nazw wyliczeniowych

Public Enum tiErrorEnum 
    tiNone = 0 
    tiWarning 
    tiError 
    tiDupDoc 
End Enum 

i używam jednego z teksty stałe w oświadczeniu, takie jak

ErrorNum = tinone 

spodziewa osłonki być ustalone przez IDE, nie zmienia tinonu na tiNone, ale zmienia defę członka enum na tinone! Dokładnie do tyłu!

Czy istnieje obejście?

Odpowiedz

12

Tak, istnieje. Jest to trochę dziwne i prawdopodobnie chcesz skomentować, dlaczego robisz to w swoim kodzie, aby przyszli twórcy nie wpadli w zakłopotanie, ale oto, co chcesz zrobić. Dodaj wyliczenia jako elementy publiczne wewnątrz bloku kodu dyrektywy kompilacji (więc kompilator nie może tego zobaczyć, oczywiście). Powinieneś to zrobić najlepiej pod deklaracją wyliczeń, tak jak poniżej:

Public Enum tiErrorEnum 
    tiNone = 0 
    tiWarning 
    tiError 
    tiDupDoc 
End Enum 
#If False Then 
    Public tiNone 
    Public tiWarning 
    Public tiError 
    Public tiDupDoc 
#End If 

Prosta. IDE rozpozna i zachowa nazwy wyliczeń poprawnie, a kompilator zignoruje blok.

+0

+1 - Szkoda, że ​​nie pomyślałem o tym wszystkie lata temu – Kev

+0

Widziałem, że to się dzieje i nigdy nie rozumiem, jak sobie z tym poradzić. Uwielbiam twoje rozwiązanie, bardzo hackish. –

+0

@Manuel, Doceniam komentarz, ale kredyt, w którym należy się kredyt: dowiedziałem się o tym od innego twórcy, który jest o wiele mądrzejszy ode mnie. – Cyberherbalist

1

To jest błąd w edytorze. Wydaje mi się, że pamiętam, że wpisanie nazwy wyliczenia zamiast użycia intellisense zmienia przypadek nazwy wartości wyliczeniowej w deklaracji.

1

Sztuką jest zawsze kwalifikować swoich wyliczeń:

tiErrorEnum.tiDupDoc 

Intellisense będzie wtedy poprawnie listy wyliczanie po naciśnięciu kropki. Myślę, że to również ułatwi czytanie kodu, jeśli wyliczenie jest dobrze nazwane.

Powiązane problemy