2008-10-29 7 views
26

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

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

+0

Retagged as 'vb6' + 'ide' – 2008-11-02 05:07:48

+0

Возможный дубликат [Остановить Visual Basic 6 от изменения моего корпуса] (https://stackoverflow.com/questions/1064858/stop-visual-basic-6-from-changing -my-кожух) – DaveInCaz 2017-06-16 12:49:38

ответ

29

Продолжая DJ's answer ...

И это будет не только изменить случай переменных в том же объеме, либо.

Он изменит случай всех переменных с тем же именем во всем проекте. Поэтому, даже если они объявлены в верхнем регистре в одном месте, у другого модуля могут быть разные переменные, использующие одни и те же имена переменных в нижнем регистре, в результате чего все переменные в вашем проекте будут меняться на нижний регистр, в зависимости от того, какая из объявлений была загружена (?) Или отредактирован последним

Таким образом, ваши переменные C и X меняют регистр, а Y - нет, вероятно, потому, что C и X объявлены где-то еще в вашем проекте, но в нижнем регистре, а Y - нет.

Есть еще одно упоминание об этом here, где они в основном кажутся связанными с конфликтующими именами переменных, когда случай используется для дифференциации локальных переменных из глобальных переменных. Вместо этого они в конечном итоге идут на префиксы.

Единственной альтернативой я могу думать о том, чтобы использовать какой-то другой редактор с VB6-подсветкой возможностей, чтобы сделать ваше редактирование ...

+0

Просто нашел ответ на: https://stackoverflow.com/questions/1064858/stop-visual-basic-6-from-changing-my-casing Посмотрите на ответ, начиная с «простым способом» от " UserX "... Я вставим здесь ответ: ПРОСТОЙ ПУТЬ: Уберите каждую переменную в том случае, если вы хотите. В противном случае VBA изменит его таким образом, который непонятен. `Dim x, X1, X2, y, Yy as variant` в подпрограмме изменяет ВСЕ случаи на те, которые указаны в инструкции Dim. – sirboderafael 2017-11-09 02:15:28

-1

Он должен быть определен/заявлен в нижнем регистре. Найдите декларацию и исправьте ее там. IDE всегда будет изменять этот случай, чтобы соответствовать объявлению.

+4

-1 Неверно. VB6 изменяет корпус имени по своему усмотрению независимо от объема и явных определений. Так же, как говорили другие. Нет смысла искать определение и фиксировать его здесь. Он просто нарушит другое определение в разных областях. Это довольно случайно, в зависимости от того, какие файлы были затронуты последними. – 2009-03-27 18:54:18

+1

-1. Не всегда верно. Если у вас есть команда, работающая с контролем версий в том же проекте, VB6 иногда меняет корпус имени при регистрации. Он изменяет декларацию * и * обычаи по своим собственным причинам. Никогда не выяснял, что заставляет это делать. – MarkJ 2009-06-30 21:23:55

-1

DJ - это место на ... VB всегда меняет регистр переменных в соответствии с первоначальной декларацией. Это «особенность».

+2

Если у вас есть одно и то же имя переменной, объявленное в нескольких областях, но с другим корпусом, оно изменит * все * их обратно и закрепится в зависимости от того, какой файл вы отредактировали последним. – 2010-06-25 11:03:24

3

Чтобы пройти болезненный опыт, какой файл, установите параметр VSS в диалоге дифф делать нечувствительные к регистру сравнения. Таким образом вы увидите только «реальные» изменения.

5

Перечисления еще хуже. Неправильное использование случая, когда используется перечисление, изменяется случай определения.

+2

Это не просто переменная с тем же именем, что и член перечисления. Фу, просто отстой. – 2010-06-25 11:00:31

-1

Продолжая отличный ответ Меркатора ...

Я бы рекомендовал:

  1. Проверьте все файлы (я полагаю, вы используете VSS для приложения VB6)
  2. пересобрать всего проекта группы
  3. Повторно проверьте обратно в VSS

Теперь базировать вы реальные различия Rathe r, чем «автоматические» изменения, которые VB6 попытался применить.

1

Закройте все проекты VB, откройте файл формы с помощью текстового редактора, измените регистр всех имен и повторно откройте проект с помощью VB IDE.

0

Предотвращение VB6 автокорректировки Для перечисления значений

Как мое общее правило, я объявлять константы в верхнем регистре. Поскольку перечисления являются по существу константами, мне нравится объявлять значения для перечислений в 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 

Я не знаю, работает ли это вообще, и если это продолжается до именования автоматической коррекции имен переменных /.

13

Так как я всегда нахожу эту нить первый ищу решения к перепутались вверх корпус, вот один Simon D предложил в related question:

Если вам просто нужно корпус Зафиксирует одну переменной (например, вам случайно сделал cOrrectCAse переменную, и теперь они повсюду), вы можете исправить это навсегда, добавив

#If False Then 
    Dim CorrectCase 
#End If 

в начале вашего модуля. Если вы сохраните проект и позже удалите его, корпус останется верным.

Использование Excel VBA Я часто случайно изменить все Range.Row к Range.row путем небрежно затемнением с row переменной внутри некоторой функции - с помощью решения Саймона двойки я могу исправить это сейчас.