我工作的公司也有一个遇到标识符限制的大型 VB6 项目。我开发了一种方法来准确计算剩余标识符的数量,这已被纳入我们这个项目的构建过程中。
在尝试了几个工具都没有成功之后,我终于意识到 VB6 IDE 本身确切地知道它还剩下多少标识符。事实上,当您添加一个超过其限制的变量时,VB6 IDE 会引发“内存不足”错误。
利用这个事实,我编写了一个 VB6 Add-In 项目,它首先在 IDE 中编译当前加载的项目,然后将唯一命名的变量添加到项目中,直到它抛出错误。当出现错误时,它会将在错误之前添加的标识符的数量记录为剩余的标识符数量。
此编号存储在我们的自动构建过程已知位置的文件中,然后读取此编号并将其报告给开发团队。当它低于我们认为合适的值时,我们会安排一些重构时间并将更多代码从该项目移出到 DLL 项目中。几年来,我们一直在生产中使用它,并且已被证明是一个可靠的过程。
要直接回答这个问题,我知道使用加载项是准确测量剩余标识符数量的唯一方法。虽然我无法分享我们项目正在使用的插件代码,但我可以说涉及的代码并不多,而且开发时间也不长。
Microsoft 有一个关于如何创建加载项的不错的指南,可以帮助您入门:
https: //support.microsoft.com/en-us/kb/189468
以下是特定于计数标识符的一些重要细节:
- 在当前加载的项目被编译之前,VB6 IDE 在标识符不足时不会始终抛出错误。我们的插件在添加标识符之前以编程方式执行此操作以确保准确计数。如果无法编译项目,则无法获得准确的计数。
- 有 32,500 个标识符可用于新的空 VB6 项目。
- 只计算唯一标识符名称。在两个不同的例程中具有相同名称的两个局部变量仅算作一个标识符。