很多年前我使用VB3为客户编写了一个系统 - 或者VB5或6?记不清楚......很久以前它确实 。
无论如何,这些年来他们一直在愉快地使用这个程序,包括从Windows 95到XP的办公室范围升级 - 但现在他们想将办公室计算机升级到Windows 7.他们理所当然地尝试升级一台计算机并重新安装我的程序 - 它没有用。
是否有任何快速解决方案可以让这个传统软件在Windows 7上运行?或者他们真的需要重写整个程序才能使用它吗?
答案 0 :(得分:4)
如果您在此处声明它是Visual Basic 3.0,那么它可能无法在Windows 7上本机运行。如果您要运行应用程序,则需要使用Windows 7 Virtual XP Mode。另一方面,VB 6.0应该在Windows 7上运行,请参阅支持声明here。
答案 1 :(得分:2)
您可以在Windows 7,8,8.1和10上运行VB3程序,但问题相对较少。我通常在XP-SP3兼容模式下运行它们。我有很多以这种方式运行的旧VB3程序。 VB3程序虽然只有16位,但只能在32位版本的Windows Vista / 7/8/10上运行,所以如果你有一个64位的窗口,那么你就不能运行它们,除非你使用它们XP-Mode(仅适用于Windows 7)或使用VMWare Player或VirtualBox等设置虚拟Windows XP。我在我自己的Win-10 64位PC上完成了这项工作,我在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位版本,尽管类似的控件可能已经作为Microsoft标准控件存在。
我使用Apex TrueGrid作为绑定到数据控件的网格,用于处理SQL查询并返回结果。我需要升级到TrueDBGrid。但是我现在发现标准的VB6 Microsoft MSFlexGrid具有我在旧的TrueGrid控件中使用的所有功能,所以我现在用MSFlexGrids替换了TrueDBGrids。属性和方法是不同的,我不得不重新编码,但大多数是在用于所有网格的标准子程序中,所以我只需要对所有网格进行一次大多数更改。
最大的麻烦是,当您将控件从VB3升级到VB4 / 5/6时,新控件通常具有相同的属性,但具有不同的名称和不同的参数,或者有时某些功能并不存在必须找到一个解决方法。或者您可能必须使用具有大量代码更改的不同控件来支持新控件。
我有几个VB3程序,共有超过1,000,000行代码,只是因为我的资源和内存耗尽而无法运行。我无法添加任何更多功能,因为如果我执行了该程序并且#39 ; t编译或赢了。
我尝试将这些从VB3转换为VB6但遇到了一些错误,我最终从头开始重写了很多错误。多年来我尝试过多次这样的转换,但是至少你曾经尝试过这几次""转换它们然后你必须尝试运行它们,当你发生这种情况时,你必须尝试编译它们。我实际上写了一个VB6程序来读取VB3源代码并尽可能多地自动进行更改。您无法执行此操作的一个区域是* .FRX文件中保存的控件自定义数据,因为它们是二进制文件并且未记录。这是我凸显的地方...... 加载程序,运行,得到一个错误,纠正那个错误,保存, 运行,得到一个错误,纠正那个错误,保存, 运行,得到一个错误,纠正那个错误,保存, 运行,获取错误,纠正错误,保存,运行等 您只能一次看到一个错误,并且转换后的代码中存在数千个编译器错误。我经常在花了几天试图逐一摆脱这些错误后放弃了。我甚至可能只有一个错误就完成了 - 但是你不能告诉你 - 你只知道你什么时候真正完成了。