VB 6.0,程序中变量值不能及时刷新,比较奇怪

saliors 2010-11-02 11:54:24
 Scheme_Stepsum = J                                 '所有步数
Reci(J * 10 + 2) = Val("&H" & Mid(CRC, 1, 2))
Reci(J * 10 + 3) = Val("&H" & Mid(CRC, 3, 2))

MsgBox "J = " & J, vbInformation + vbOKOnly, "操作提示"

If flag1 = 1 Then
frm_comm.Show , frm_scheme
frm_comm.WindowState = 0

在程序里面 ,Scheme_Stepsum是全局变量,J是局部变量,窗体 frm_comm 里会调用变量Scheme_Stepsum 的值,现在的问题是,如果没有MsgBox "J = " & J, vbInformation + vbOKOnly, "操作提示"去调用一下J变量,在frm_comm 里看到Scheme_Stepsum 会是0,并不等于J,所以很费解。
另外,如果在调试的环境下运行程序,即使没有MsgBox "J = " & J, vbInformation + vbOKOnly, "操作提示"这句,运行会是正常的,变量Scheme_Stepsum 会等于J,上述的问题是编译成执行文件才会出现的。
这里不知道说的请不清楚,我的qq是9704369,请高手来指点下。

帮顶的朋友都给分,能帮忙解决问题的高手另外开贴给分。谢谢啦~
...全文
202 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
saliors 2010-11-16
  • 打赏
  • 举报
回复
虽然没有解决最终的问题,但是谢谢以上各位的热心帮助。结贴了。
saliors 2010-11-11
  • 打赏
  • 举报
回复
好像跟timer也没有关系。


现在试验出来有个新的解决方法:
原来编译的时候是选了optimize for fasr code这个选项的,后来我选了no optimization试一下,编译出来就没有那个问题,这个是怎么回事,优化会造成执行的不一致?具体会优化了什么东西?
yangxie5201314 2010-11-11
  • 打赏
  • 举报
回复
VB就那鸟样,好多编译前和编译后不一样.搞死人。你得换思路了
saliors 2010-11-11
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 sonic_andy 的回复:]
Msgbox的对话框在VB中会阻塞Timer事件,编译后不会阻塞.
是不是跟这个有关系?
[/Quote]
我再看看跟这个有没有关系
saliors 2010-11-11
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 dbcontrols 的回复:]
Scheme_Stepsum 和 J的数据类型一样么?
[/Quote]
一样的
赵4老师 2010-11-11
  • 打赏
  • 举报
回复
一般都选择不优化。
sonic_andy 2010-11-10
  • 打赏
  • 举报
回复
Msgbox的对话框在VB中会阻塞Timer事件,编译后不会阻塞.
是不是跟这个有关系?
soarsoar77 2010-11-10
  • 打赏
  • 举报
回复
这个Msgbox根本不影响的啊,关键还是单步调试,看下值的变化吧
你的代码不全,别人都没法看
homer3382 2010-11-10
  • 打赏
  • 举报
回复
MsgBox "J = " & J, vbInformation + vbOKOnly, "操作提示" 跟J是啥值没有关心吧,你J变量用的有问题
dbcontrols 2010-11-10
  • 打赏
  • 举报
回复
Scheme_Stepsum 和 J的数据类型一样么?
saliors 2010-11-10
  • 打赏
  • 举报
回复
看来是没有人知道这个问题的啦
saliors 2010-11-06
  • 打赏
  • 举报
回复
1楼,8楼,9楼的方法,都试过了,没有用,还是一样。
唉,不明白了
chinaboyzyq 2010-11-03
  • 打赏
  • 举报
回复
J可能会是延时后得到数据的,真是这样的话可以把msgbox处改为延时[sleep(200)],以等待J得到数据。
bcrun 2010-11-03
  • 打赏
  • 举报
回复
如果不涉及公司技术机密的话,最好贴完整些:)
赵4老师 2010-11-03
  • 打赏
  • 举报
回复
MsgBox "J = " & J, vbInformation + vbOKOnly, "操作提示"
改为
frm_comm.Refresh
试试。
lxq19851204 2010-11-02
  • 打赏
  • 举报
回复
fzx4936 2010-11-02
  • 打赏
  • 举报
回复
如果真这样 那才见鬼了
你的代码给出的太少了 起码要局部完整才好研究
贝隆 2010-11-02
  • 打赏
  • 举报
回复
老实说,我不明白你的意思。你可以单步调试一下,实时看看全局变量的值啊。
qqlanxin 2010-11-02
  • 打赏
  • 举报
回复
frm_comm.Show前面加doevents试试。
saliors 2010-11-02
  • 打赏
  • 举报
回复
1楼的,我迟些按你的方法试试。最近两天在出差。
还有那些高手遇过类似的问题的,希望继续赐教
加载更多回复(2)

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧