VB 编译后的程序跟调试时的性能不一样,奇怪

我发现一个的现象:用Vb6编的程序,在调试状态下,运行的结果是对的,但编译后,运行的结果跟调试时运行的结果却有些不一样,何故?
比如:我用图片框加载一幅超大图像,在调试状态下,通过各种技巧,将该超大图像加载读取并缩小显示到图片框中;可是编译成可执行文件时,再原样运行,就无法加载该超大图片,没任何响应 了。真奇怪。
找到原因了,我把打开文件的通用对话框放到模块里面去调用该通用对话框,在编译后出现的不稳定现象,因为该对话框在编译后有时返回的文件名为空,所以,就没响应了;我现在将该通用对话框以组件的形式添加到窗体上来,在窗体中执行打开文件,该对话框就返回指定的文件名了,该不响应的现象消失了。

  题主是按 F5 编译调试的吧?这个叫“预编译”就是模拟生成,用来检查代码及逻辑错误,代码运行到哪里就临时编译到哪里。
  而生成EXE则是全编译。
  如果代码本身存在不影响运行的问题的话,在预编译是能通过的。但一旦生成成EXE就出错了。这个要结合代码具体分析。追问

按F8调试编译的,没看出问题。但生成exe文件后,有时运行的结果跟F8运行的结果不一样。奇怪。搞得只好认为插入msgbox消息,看看在exe文件中执行时,到底是哪步出问题了。

追答

F8 和 F5 执行是一样的,只不过 F8 相当于一步一断点。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-19
会不会图片地址的问题,假如你把图片放在工程文件夹,并用相对地址表示,编译后的exe放在另一个文件夹,那就有可能读不到文件了。
第2个回答  2013-09-19
会有这样的情况的,极少出现,这个要看具体的代码,有些代码只能编译后才能运行。
第3个回答  2013-09-19
没有源代码不好找原因
你要加载的文件的路径是怎么设置的,绝对路径还是相对路径?

pb中在pb环境下运行的程序和编译的程序不一样怎么解决?(注:和数据...
我用的环境是WindowsXP系统,PowerBuilder9在调试时使用的是Windows经典样式,它是不管系统的显示样式如何设置的,所以当系统显示样式设置成其它样式时,编译后的程序运行界面就与调试时显示的界面就可能会出现差异。其实,这种差异并不是一种“错误”,只是显示时因样式变化而出现的走样。如果是WindowsXP系统...

vb设计一个程序,以前一直正常,但是今天在编译后产生的可执行文件运行后...
这应该是因为在开发时所在的环境和运行时所在的环境msvbvm60.dll文件版本不一致造成的。如果两个系统环境打上SP6补丁之后,应该是新版本,用新版本编译出的程序在只包含旧版本文件上执行,因为dll的接口变化,则会出现执行错误。msvbvm60.dll文件信息:Visual Basic Virtual Machine 就是VB虚拟机的意思。

为什么我编程的时候感受不到那种乐趣,也不是程序难?要怎么培养啊_百度...
譬如看书,遇到看不懂的部分,可以暂时跳过,先往后看,看完后面的之后,再回头看前面跳过的部分往往会有一种豁然开朗的感觉。再比如,编程调试时死活找不到错误会很郁闷,这个时候很多同学会束手无策,其实只要在程序不同的地方加上输出语句,然后运行看有哪些输出,这样一步步缩小错误的范围从而确定错误发生的位置。等等。。

vb中print和debug.print输出有什么区别?对电脑有什么影响?
因此,在实际应用中,建议仅在需要时使用这些输出语句,并在完成调试或展示信息后及时移除或注释掉不必要的输出代码。总的来说,`Print`和`Debug.Print`在VB中各自扮演着不同的角色。前者主要用于在用户界面上展示信息,而后者则更侧重于在开发过程中辅助调试。正确使用这些语句可以帮助开发者更有效地进行...

VB6编译后的EXE文件运行占用内存超高导致程序假死
Dim conn As ADODB.Connection Dim rs As ADODB.Recordset set conn=new adodb.connection set rs=new adodb.recordset 然后进行测试 ‘message = message + CStr(rs.Fields(0).Value) + ","进行测试 Text1.Text = "商品编号" + message + "今天到期!"End If message=""进行测试 ...

vb是怎样解释执行和单步调试的
VB6的IDE内部进行调试的时候是使用第一种机制进行的,这也就是为什么在VB6的IDE内部运行程序要比编译成本地代码再运行慢得多。基本上大部分解释性语言比如PHP、Lua等等都是这样的结构,你去看看他们的解释器的结构有助于你理解VB6的机理。但是了解了内部结构不见得就一定能那么简单的用,VB6不一定把这些...

VB程序在调试下正常运行,但是生成EXE文件后却不可运行,为什么?急...
把这句改一下 Str_path = App.Path & "\\" & "database\\MoneyMIS.mdb"改成 if right(app.path,1)="\\" then Str_path = App.Path & "database\\MoneyMIS.mdb"else Str_path = App.Path & "\\" & "database\\MoneyMIS.mdb"end if ...

为什么VB生成EXE文件时显示溢出,但是在里面调试的时候又不会?
有的错误是编译的时候才发现的。你调试的时候如果选择编译后运行同样会发现这样的错误,你直接按F5运行就有可能不出发这个错误,因为没编译过的程序你的代码没走到那一步是不会触发错误的。你按alt (或者是ctrl 记不太清了)+F5运行,就是先编译后运行。养成这样的习惯最好。不然等你要生成EXE再编译...

VB是一种面向()的可视化程序设计语言,采取了()的编程机制
VB是一种面向(对象)的可视化程序设计语言,采取了(事件驱动)的编程机制。VB,即Visual Basic,是一款由微软开发的包含协助开发环境的事件驱动编程语言。Visual Basic 具有“面向对象”特性。这种“面向对象”的编程方法和传统的全用代码编制程序的方法有很大区别。“面向对象”的编程方法比传统的编程方法...

刚刚接触VB的问题
5、尽量使用Debug.Print进行调试在很多初学者的调试中,用MsgBox来跟踪变量值.其实用Debug.Print不仅可以达到同样的功效,而且在程序最后编译过程中,会被忽略.而MsgBox必须手动注释或删除. 通常:MsgBox nName 应该: Debug.Print nName6、在重复对某一对象的属性进行修改时,尽量使用With...End With通常:Form1.Height ...

相似回答