Подтвердить что ты не робот

Редактор VB6 меняет регистр имен переменных!

Я не являюсь человеком Visual Basic, но мне поручено поддерживать старое приложение VB6. Всякий раз, когда я проверяю файл, редактор заменяет кучу имен прописных букв строчным автоматически. Как я могу сделать эту остановку!? Я не хочу менять их все, и это боль, чтобы эти изменения отображались в SourceSafe "Различия", когда я пытаюсь найти отличия REAL.

Он также автоматически изменяется в определении: Dim C as Control становится Dim c как Control. Dim X & становится Dim x &. Но он не делает это все время; например, три линии вниз от Dim x &, есть Dim Y &, в верхнем регистре, который он не изменил. Почему он делает это со мной?

4b9b3361

Ответ 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 попытался применить.