Редактор VB6 меняет регистр имен переменных!
Я не являюсь человеком Visual Basic, но мне поручено поддерживать старое приложение VB6. Всякий раз, когда я проверяю файл, редактор заменяет кучу имен прописных букв строчным автоматически. Как я могу сделать эту остановку!? Я не хочу менять их все, и это боль, чтобы эти изменения отображались в SourceSafe "Различия", когда я пытаюсь найти отличия REAL.
Он также автоматически изменяется в определении:
Dim C as Control становится Dim c как Control. Dim X & становится Dim x &. Но он не делает это все время; например, три линии вниз от Dim x &, есть Dim Y &, в верхнем регистре, который он не изменил. Почему он делает это со мной?
Ответы
Ответ 1
Продолжая ответ DJ...
И это не только изменит случай переменных в той же области видимости.
Это изменит случай всех переменных с одинаковым именем во всем проекте. Поэтому, даже если они объявлены в верхнем регистре в одном месте, у другого модуля могут быть разные переменные, использующие одни и те же имена переменных в нижнем регистре, в результате чего все переменные в вашем проекте будут меняться на нижний регистр, в зависимости от того, какая из объявлений была загружена (?) Или отредактировано последним.
Итак, причина, по которой ваши переменные C и X меняются, а Y - нет, вероятно, потому, что C и X объявлены где-то еще в вашем проекте, но в нижнем регистре, а Y - нет.
Здесь упоминается еще одно упоминание здесь, где они в основном кажутся связанными с конфликтами таких переменных, когда случай используется для дифференциации локальных от глобальных переменные. Вместо этого они отправляются на префиксы.
Единственной альтернативой, о которой я могу думать, является использование другого редактора с возможностями выделения VB6 для редактирования...
Ответ 2
Так как я всегда нахожу эту тему в первую очередь для решения для испорченного корпуса, вот один Simon D, предложенный в связанный вопрос:
Если вам просто нужно исправить одну оболочку переменной (например, вы случайно сделали переменную cOrrectCAse
, и теперь они повсюду), вы можете исправить это, добавив
#If False Then
Dim CorrectCase
#End If
в начало вашего модуля. Если вы сохраните проект и позже удалите его, корпус останется верным.
Используя Excel VBA, я часто случайно меняю все Range.Row
на Range.Row
, небрежно затемняя переменную row
внутри некоторой функции - с помощью решения Simon D я могу исправить это сейчас.
Ответ 3
Перечисления еще хуже. Неправильное использование случая, когда используется перечисление, изменяется случай определения.
Ответ 4
Чтобы преодолеть мучительный опыт работы с файлами, установите параметр VSS в диалоговом окне diff, чтобы делать сравнения без учета регистра. Таким образом вы увидите только "реальные" изменения.
Ответ 5
Закройте все проекты VB, откройте файл формы с помощью текстового редактора, измените регистр всех имен, затем повторно запустите проект с помощью VB IDE.
Ответ 6
Предотвратить автоматическое исправление VB6. Для значений перечисления
Как правило, я объявляю константы в UPPERCASE. Поскольку перечисления являются по существу константами, мне нравится объявлять значения для перечислений в UPPERCASE. Я заметил, что VB6 IDE также автоматически исправляет их.
Я обнаружил, что IDE не исправляет эти значения при использовании чисел и подчеркиваний '_' в именах значений.
Пример:
Public Enum myEnum
VALUE 'Will be corrected to: Value
VALUE1 'Will not be corrected
VALUE_ 'Will not be corrected
End Enum
Я не знаю, работает ли это вообще, и если это распространяется на именование/автокоррекцию имен переменных.
Ответ 7
Он должен быть определен/объявлен в нижнем регистре. Найдите декларацию и исправьте ее там. IDE всегда будет изменять регистр, чтобы он соответствовал декларации.
Ответ 8
DJ находится на месте... VB всегда изменяет случай переменных в соответствии с оригинальной декларацией. Это "особенность".
Ответ 9
Продолжая от Меркатора отличный ответ...
Я бы рекомендовал:
- Проверьте все файлы (я предполагаю, что вы используете VSS для приложения VB6)
- Сделайте перестройку всей группы проектов
- Перепроверить обратно в VSS
Теперь вы основываетесь на реальных различиях, а не на "автоматических" изменениях, которые VB6 попытался применить.