停止Visual Basic 6更改我的外壳

Toj*_*oji 61 vb6

非常简单的问题,显然不可能找到一个合适的答案:我怎样才能使Visual Basic 6停止改变我的^ @#*变量套管!?!

我知道很多VB用户的一般意见是这个"功能"实际上非常有用,但我怀疑他们在任何源控制系统中都使用它很多.当您尝试与其他几个开发人员合作开展任何重要项目时,这绝对是一种感染.如果忽略,您会对文件(甚至没有实际代码更改的文件)产生数千个误报"更改",这些更改会污染修订历史记录,并且在某些情况下几乎不可能找到发生的实际更改.

如果你不忽略它(就像我的办公室,我们被迫实施"不需要更改案例"的政策),你花费的时间是你每次提交时的5倍,因为你必须小心地恢复VB的"修正" "在每个文件上,有时会恢复数百行以进行一行更改.

当然必须有一个设置,插件,黑客等可以删除这个不需要的"功能"?我愿意采取任何我能得到的方法,只要它不需要我挑选成堆的幻影差异.并预先解决了几个抱怨:不,我不能在我的差异工具中关闭案例检测,这不是重点.不,我们不能仅仅在全球范围内改变案例.我们正在与跨越多年开发的多个开发人员共同工作的数十万个LOC合作.从业务角度来看,同步是不可行的.最后:不,我们无法升级到VB.net或移植到另一种语言(尽可能多的我喜欢).

(是的,我现在只是有点恼怒.你能说出来吗?我道歉,但这花费了我的时间和我的公司资金,而且我觉得不可接受.)

wqw*_*wqw 21

这是一个真实世界的场景,以及我们如何为我们的350k LOC VB6项目解决它.

我们正在使用Janus Grid,并且在某些时候,引用JSColumn的DefaultValue属性的所有代码行都转向defaultValue.这是一个调试整个IDE滋扰的机会.

我发现刚刚添加了对MSXML的引用,现在IDE在Janus Grid类型库之前获取了ISchemaAttributes的defaultValue属性.

经过一些实验后,我发现IDE按以下顺序收集"已注册"标识符:

  • 从项目 - >参考文献中引用的库/项目按列出的顺序

  • 来自Project-> Components的控件(按未知顺序)

  • 源代码

因此,我们所做的简单修复是创建一个虚拟类/接口,其方法可以保持我们正确的套管.由于我们已经有了一个项目范围的类型库,我们在其他任何类型库之前从每个项目中引用,这是无痛的.

以下是IUcsVbIntellisenseFix接口的IDL的一部分:

[
  odl,
  uuid(<<guid_here>>),
  version(1.0),
  dual,
  nonextensible,
  oleautomation
]
interface IUcsVbIntellisenseFix : IDispatch {
    [id(1)] HRESULT DefaultValue();
    [id(2)] HRESULT Selector();
    [id(3)] HRESULT Standalone();
    ...
}
Run Code Online (Sandbox Code Playgroud)

我们为IUcsVbIntellisenseFix添加了很多方法,其中一些方法以我们曾经拼错的枚举项和我们想要解决的任何东西命名.使用从每个项目引用的公共库(ActiveX DLL)中的简单VB类也可以完成相同的操作.

这样我们的源代码在某些时候汇聚到合适的外壳,因为在签出时,IDE实际上根据IUcsVbIntellisenseFix外壳修复了外壳.现在,即使我们尝试,也不能拼错枚举,方法或属性.

  • 这将是对"VB6 IDE提示和技巧"问题的一个很好的答案http://stackoverflow.com/questions/664370/your-favorite-visual-basic-6-tools-and-tips (2认同)

Sim*_*n D 19

根据您的情况添加

#If False Then
    Dim CorrectCase
#End If
Run Code Online (Sandbox Code Playgroud)

可能有帮助.


小智 5

简单的方法:Dim您想要的情况下的每个变量。否则,VBA就会以一种无法理解的方式改变它。

Dim x, X1, X2, y, Yy  as variant
Run Code Online (Sandbox Code Playgroud)

在子例程中会将所有情况更改为Dim语句中的情况

  • 给出的示例是一个常见的编程陷阱,其中只有列表中的最后一项实际键入为声明的所有其他类型将默认为变体。如果您确实想要变体并不重要,但如果您使用任何其他类型来执行此操作,您将获得所有变体,并且只有最终项目将获得声明的类型。 (9认同)

U62*_*U62 -9

哇。我花了很多时间用 VB6 编程,但我不知道你在说什么。我认为您所指的唯一一件事是智能感知会更改变量名称的大写以匹配它们的声明。如果你对此有所抱怨,我就不得不想知道为什么他们一开始就以其他方式进入。如果这是你的问题,不,据我所知,没有办法禁用它。我建议您一次性检查每个文件,确保变量声明和使用的上限全部匹配,然后重新签入。

  • 确切地。如果有的话,那么开发人员同事就是改变 ^@#*ing 变量大小写的人。VBA IDE 只是使其保持一致。 (2认同)