我正在将16位VB3应用程序转换为32位。鉴于我已将Visual Basic 3项目转换为Visual Basic 4项目,将OCX替换为OCX并编译应用程序,是否应该在Windows 7 x64上运行?
我已经知道了
在Windows 7 x64上是否存在任何已知的Visual Basic 4运行时(VBRUN)不兼容问题?如果是这样,打开某些兼容性设置是否足够?
请注意,此问题与在Windows 7 x64上运行Visual Basic 4 IDE无关。开发在虚拟机上完成。
答案 0 :(得分:1)
我正在运行VB3应用程序而没有任何问题...... XP Vista 32位 Win-7 32位 Win-8 32位 Win-8.1 32位 Win-10 32位
微软可能不支持此功能,但它运行正常。 所以我建议VB4 16位应用程序也可以在所有这些操作系统上正常工作。
我猜测VB4 32位应用程序在32位和64位版本的Windows上都能正常工作。
最简单的方法是在VB4 32-biut中编写一个非常简单的APP,并尝试在目标系统上运行它,看看会发生什么。假设这个工作正常,你可以尝试转换你的应用程序,看看会发生什么。
我同意你最好直接去VB6,而不仅仅是VB4。我还没有尝试将VB3迁移到VB4,但我已经将VB3迁移到了VB6,这是一场噩梦。
我的VB3应用程序有超过500,000行代码。由于这个原因,我不断遇到内存问题。
我的转换过程是 (1)将VB3源文件复制到新目录。 (2)然后我运行全局搜索并替换这些文件以用VB6等效替换控件类型名称,并将* .FRM文件的格式更改为VB6格式。我确实试图在VB6中打开它们并且有转换问题。 (3)在VB6中打开项目,允许它进行任何更改然后保存。 (4)运行另一个全局搜索并替换以纠正我知道仍然是麻烦的问题。 (5)再次在VB6中打开项目并尝试编译它 - 在遇到错误时纠正每个错误并继续进行直到它编译。 (6)一旦实际编译,然后开始调试过程。
许多控件具有不同的属性名称,因此调试很烦人。我还使用了第三方控件(例如Truegrid),它们的32位等价物完全不同。即使是Microsoft标准网格也有不同的属性。 VB3中的旋转按钮成为VB6等中的UpDown控件。
我试图将我的VB3程序转换几次并放弃,因为我没有时间才能让它们编译。最后,我在VB6中重写了很多程序而不是转换它们。
当我说我进行全局搜索和替换时 - 我实际上写了一个VB6程序来执行此操作,因为它不是一个简单的过程。
MSAccess数据库命令也有所不同,特别是如果您移动到ADO而不是DAO。这对我来说不是一个太大的问题,因为我已经在我自己的子程序中使用标准错误检查等封装了所有这些函数,因此我只需要更改标准例程中的实际数据库命令而不是批量操作该计划。我之所以这样做是因为我的历史,每当一个新的编程语言版本出现或者在不同品牌的机器上运行时,命令就会有所不同(在过去甚至MS-DOS之前),所以我想保护自己由此。这也意味着如果我想使用BTrieve引擎而不是Access或Sybase或MySQL等,那么我可以只更改子程序,程序的其余部分应该可以正常工作。多年来,我使用了大约20种不同的数据库引擎。
答案 1 :(得分:0)
Windows 7不支持此运行时。事实上,我对您正在处理这样一个旧版本感到震惊。 Windows 7支持的唯一“经典”VB运行时是VB6 SP6。此外,我不确定是否支持除Common Controls之外的任何控件。