2009-02-05 40 views
1

我是新来的VB6,但我目前负责维护编辑器的恐惧像工具与大量的形式,类,模块和第三方工具所有块像在德克萨斯州电锯大屠杀那个家伙的皮肤面临在一起...从Dev机器vs安装时,VB6应用测试结果有什么不同?

我不明白为什么我得到不同的结果,当我运行在调试模式的应用程序,vs当我编译它,并运行它在我的开发电脑vs当我安装在不同的电脑上。

是的,我知道我很笨,所以请指示我到哪里我可以找到更多关于此。我希望找出像不同的链接,注册表等相关的连接,我现在根本没有得到,即蜡像,蜡:P

脖子上的主要疼痛是当我'米试图从我的QA调试一些错误,我需要找到一个备用电脑来测试这个,再加上我不能直接调试,因为我不知道代码是在哪里,如果我这样做。

谢谢。

+0

相关问题:[Vb 6使调试器不同的结果](http://stackoverflow.com/questions/221502/vb-6-make-exe-different-results-to-debugger/221622#221622) – dummy 2009-02-08 10:02:30

回答

2

我运行VS当我编译它在调试模式下应用程序和我 devevelopment PC

运行它,当你编译你必须编译为本地代码或P码的选项。调试器仅使用pcode运行。在极少数情况下,当您编译为本地代码时,行为会发生变化。这个特别是非常罕见的。自从VB6发布以来,我使用了VB6,并且每年可能会获得一次或两次。我的应用程序是一个复杂的CAD/CAM创建形状和运行金属切割机,并有二十几个DLL。不是典型的情况。在家用我的爱好软件,我从来没有遇到过这个问题。

还有另一类由事件排序问题导致的错误。虽然VB6不是真正的多任务处理,但它有能力跳出当前代码块来处理事件。如果它重新进入新事件的相同块,可能导致有趣的事情(至少可以说)。我认为这是你的问题的可能来源,因为你的软件是一个高度交互式的软件编辑器。

一般来说,通过对受影响区域进行重新排序来解决问题。您可以通过插入MsgBox或写入文本文件来记录受影响的区域以记录您的位置。我建议记录到一个文本文件作为MsgBox倾向于改变时间或多任务相关的行为。

请记住,如果事件在代码块中间发生VB6时触发,并且存在一个DoEvents,那么它将使代码块处理事件并返回到原始代码块。如果它重新进入相​​同的代码块,并且你不意味着发生这种情况,那么你将遇到问题。而且在不同的计算机上你会遇到不同的问题,因为每个计算机的时间都会不同。

处理这类问题的最简单方法是创建一些标志变量。按照多任务的说法,它们被称为信号量或互斥量。当你输入代码的关键部分时,你将它设置为true。当你离开例程时,你将它设置为false。如果在输入该代码段时已经为真,则不执行该代码段。

当我安装在不同的电脑上。

这些通常是安装错误DLL的结果。最有可能你有一个较旧的版本,而目标有一个更新的版本。我会下载免费的虚拟PC,并创建一个干净的Windows XP安装来仔细检查。

如果您的问题是事件时间,这也可能会在不同的计算机上有所不同。这是通过记录(而不是MsgBox)可疑区域找到的。

如果你可以显示一个屏幕截图或你的具体错误的文字,那么我可以帮助更好。

0

首先要检查的是您的应用所依赖的所有dll的版本 - 包括VB6 dll的Service Pack版本。

你有任何更具体的细节,关于有什么不同的行为?

+0

我经常看到的一些是退出条件,就像我可以在我的开发电脑上退出一样。但是当我退出安装的版本时,它猛烈地死亡。 – melaos 2009-02-05 10:14:50

+0

正如'发送错误报告给微软'类型的死亡?你有没有卸下你的所有表格(并不总是必要的,但有时是)? – Ant 2009-02-05 12:46:19

相关问题