许多年前,我用VB3 --或者VB5或者6 --为客户编写了一个系统。不记得了..。很久以前,真的是。
不管怎样,他们这些年来一直很开心地使用这个程序,包括通过一个从Windows 95到XP的全办公室升级--但是现在他们想把他们的办公计算机升级到Windows 7。明智的是,他们尝试先升级一台计算机,然后重新安装我的程序--但它没有工作。
是否有任何快速修复,使这个遗留软件在Windows 7上工作?或者他们真的需要重写整个程序才能使用它?
发布于 2010-11-27 18:12:06
如果它是VisualBasic3.0,那么它可能不会在Windows7上本地运行。如果要运行应用程序,就需要使用Windows 7虚拟XP模式。另一方面,VB6.0应该运行在Windows 7上,参见支持语句这里。
发布于 2017-01-17 11:04:20
您可以在Windows7、8、8.1和10上不作改动地运行VB3程序,但问题相对较少。我通常在XP-SP3可压缩模式下运行它们。我有相当多的老VB3程序是这样运行的。VB3程序是16位的,只能在Windows /7/8/10的32位版本上运行,所以如果您有64位的窗口,那么除非您使用XP模式(仅在Windows7中可用)或使用VMWare Player或VirtualBox或类似的方式设置虚拟Windows,否则就无法运行它们。我在我自己的Win-10 64位个人电脑上做了这件事,在这里我安装了VMWare工作站,使用XP,Win-7-32,Win-7-64,Win-8-32,Win-8-64和Win-10-32虚拟机,我在需要时运行这些虚拟机。
至于将Vb3程序转换为VB4 (32位)、VB5或VB6 -是的,您可以在新的IDE中打开它们并重新编译它们,它们应该可以正常工作。
例外
如果您在Vb3程序中使用了任何第三方VBX或DLL文件,那么您将不得不获得这些控件的32位版本,尽管类似的控件可能已经作为微软标准控件存在。
我经常使用Apex TrueGrid作为一个网格绑定到一个数据控件,用于处理SQL查询并返回结果。我需要升级到TrueDBGrid。然而,我现在发现标准的VB6 Microsoft MSFlexGrid拥有我在旧TrueGrid控件中使用的所有功能,所以我现在用MSFlexGrids替换了TrueDBGrids。属性和方法是不同的,为此我不得不重新编码,但大部分是在所有网格中使用的标准子程序中,所以我只需要对所有网格进行一次更改。
最大的麻烦在于,当您将控件从VB3升级到VB4/5/6时,新控件通常具有相同的属性,但具有不同的名称和不同的参数,或者有时某些功能不存在,因此您必须在其中找到工作。或者,您可能需要使用不同的控件来支持新控件,并进行大量的代码更改。
我有几个VB3程序,有超过1,000,000行代码,这只是因为我一直在耗尽资源和内存等等。我不能再添加任何功能了,因为如果我这样做了,这个程序就不会编译或不能运行。
我尝试将这些代码从VB3转换为VB6,但得到了许多错误,最后我从头重写了很多错误。这些年来,我尝试过几次转换它们,但是一旦您至少对它们进行了“某种”转换,您就必须尝试运行它们,当您实现这些转换时,您必须尝试编译它们。实际上,我编写了一个VB6程序来读取VB3源代码,并尽可能多地自动进行更改。您不能这样做的一个方面是保存在*.FRX文件中的控件自定义数据,因为这些数据是二进制的和无文档的。这就是我能摆脱的地方..。加载程序,运行,得到一个错误,纠正一个错误,保存,运行,得到一个错误,纠正一个错误,保存,运行等等--你一次只能看到一个错误,在转换的代码中有数以千计的编译器错误。我通常是在花了几天时间逐个摆脱这些错误之后放弃的。我甚至可能只有一个错误完成-但你不能说-你只知道什么时候你真的完成了。
https://stackoverflow.com/questions/4293062
复制相似问题