VB6编辑器更改变量名称的大小写!

时间:2008-10-29 23:11:37

标签: ide vb6

我不是一个Visual Basic人,但我的任务是维护一个旧的VB6应用程序。每当我签出一个文件时,编辑器会自动用小写替换一堆大写的变量名。我怎么能阻止这个!?我不想让它们全部改回来,当我试图找到真正的差异时,让这些变化出现在SourceSafe“差异”中是一件痛苦的事。

它也会在定义中自动更改它: Dim C as Control变为Dim c作为Control。 Dim X&变得昏暗x&amp ;.但它不会一直这样做;例如,Dim x&中有三行,有一个Dim Y&大写字母,它没有改变。为什么这样对我呢?

10 个答案:

答案 0 :(得分:27)

继续DJ's answer ...

它不仅会改变同一范围内变量的情况。

它将改变整个项目中具有相同名称的所有变量的大小写。因此,即使它们在一个地方以大写形式声明,另一个模块可能使用小写的相同变量名称使用不同的变量,导致项目中的所有变量都更改为小写,具体取决于加载的声明(?)或最后编辑。

所以你的C和X变量改变大小写的原因,而Y不是,可能是因为C和X也在你的项目中的其他地方声明,但是小写,而Y不是。

还有另一个提及它here,当用于区分局部变量和全局变量时,他们似乎主要关注这些变量名称是否存在冲突。他们最终选择了前缀。

我能想到的唯一选择是使用其他一些具有VB6突出显示功能的编辑器进行编辑......

答案 1 :(得分:22)

由于我总是发现这个帖子首先找到了一个解决方案来搞砸了套管,所以Simon D中提出了一个related question

如果您只需要修复一个变量的大小写(例如,您不小心制作了append变量,现在它们已经遍布整个地方),您可以通过添加< / p>

length

到模块的开头。如果您保存项目并稍后删除该语句,则外壳仍然正确。

使用Excel VBA我经常不小心将所有cOrrectCAse更改为#If False Then Dim CorrectCase #End If ,因为在一些函数中不小心调暗Range.Row变量 - 在Simon D的解决方案的帮助下,我现在可以解决这个问题。 / p>

答案 2 :(得分:5)

枚举更糟糕。在使用枚举的任何地方出错都会改变定义的大小。

答案 3 :(得分:4)

要了解痛苦的文件差异体验,请在diff对话框中设置VSS选项以进行不区分大小写的比较。这样你就只会看到“真正的”变化。

答案 4 :(得分:0)

必须以小写形式定义/声明。找到声明并在那里修复它。 IDE将始终更改大小写以匹配声明。

答案 5 :(得分:0)

关闭所有VB项目,使用文本编辑器打开表单文件,更改所有名称的大小写,然后使用VB IDE重新打开项目。

答案 6 :(得分: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   

我不知道这是否有效,如果这扩展到变量名的命名/自动更正。

答案 7 :(得分:0)

我遇到了类似的枚举问题,没有明显的理由将大写字母更改为混合大写字母。

Enum eRowDepths
    BD = 1
    CF = 1
    Separator = 1
    Header = 3
    subTotal = 2
End Enum

当我更改以下内容(尾随不合格变量的最后一个字符)时,我没有问题

Enum eRowDepths
    BD = 1
    CF = 1
    SEPARATO = 1
    HEADE = 3
    SUBTOTA = 2
End Enum

事实证明,这是尾巴摇狗的情况。我有以下代码,虽然不是我所接受的最优雅的代码,但是仍然可以工作(请原谅格式问题):-

'insert 3 rows iSubTotalPlaceHolder = i
rows(ActiveSheet.Range(rangeDMirrorSubTotals).Cells.Count + _ Header _ & ":" _ & ActiveSheet.Range(rangeDMirrorSubTotals).Cells.Count + _ Header + _ subTotal + _ Separator).Insert

因此,似乎该编译器将不接受显式的UpperCase常量作为此语句的一部分。

这可以接受

Dim fred as Integer
fred = SEPARATO + HEADE + SUBTOTA

因此,如果我要坚持将枚举常量保持为大写的规则,那么我的解决方法是在复杂的insert语句中使用变量而不是常量。

我希望这是有用的

答案 8 :(得分:-2)

DJ现场...... VB总是改变变量的大小写以匹配原始声明。这是一个“功能”。

答案 9 :(得分:-2)

继续墨卡托的出色回答......

我建议:

  1. 查看所有文件(我假设您使用VSS作为VB6应用程序)
  2. 重建整个项目组
  3. 重新检入VSS
  4. 现在基础是真正的差异,而不是VB6尝试应用的“自动”更改。