VB6求助,大神来帮帮忙,在do while中暂停

baidu_34733639 2016-04-20 08:56:18
我需要编写一个复杂的反复迭代运算程序,运算第n+1次与第n次结果计算误差小于给定值0.00000000000000001。程序中涉及多组变量,运算时间较长,想设计一个暂停按钮,想暂停的时候就点击,并把过程变量保存下来,同时还可以恢复程序继续运行。
我首先想到的是timer控件,可惜搞了几天都未成功,望大神来帮帮

或者还有其他办法(不用timer)也可以,但都说vb无法多线程

Sub yunsuan() '主程序
for i=1 to 100
for j=1 to 100
Do While Abs(a(i) - b(i)) < 0.00000000001
b(i) = a(i)
a (i)= 复杂的运算 '第n+1次与第n次迭代计算误差小于给定值
DoEvents
'在这里判断timer才会暂停程序,但怎么和 Command1_Click联系
Loop
next
next
End Sub
谢谢cbm666大神的程序,不知如何关联yunsuan
Private Sub Form_Load()
Command1.Caption = "开 始"
Timer1.Interval = 100
Timer1.Enabled = False
End Sub

Private Sub Command1_Click()
Timer1.Enabled = Not Timer1.Enabled
Select Case Command1.Caption
Case Is = "暂 停"
Timer1.Enabled = False
Command1.Caption = "继 续"
Call MySleep(10)
Case Is = "继 续"
Timer1.Enabled = True
Command1.Caption = "暂 停"
ForceStop = True
Case Else
Timer1.Enabled = True
Command1.Caption = "暂 停"
End Select
End Sub

Private Sub Timer1_Timer()
i = i + 1
End Sub

Sub MySleep(Delaytm&)
Command1.Caption = "继 续"
ForceStop = False
Starttm = Timer
Do
DoEvents
If ForceStop Then Exit Do
Loop Until Timer - Starttm >= Delaytm
Command1.Caption = "开 始"
Command1_Click
End Sub

还有一个弱智的问题
我想在程序运行过程中,在form上像Excel表格那样来实时刷新我的数组值,暂停后能手动更改数据

用什么控件比较好
列数,行数,根据程序数组大小自动判断,这个不好解决也无所谓,我可以用text组来,就是费事些
...全文
311 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZHRXJR 2016-05-15
  • 打赏
  • 举报
回复
Dim BO As Boolean
Dim X As Long

Private Sub DoNext()   '循环的公用过程
I = X   '这里赋值循环的初值
Do
   I = I + 1
   If Not BO Then
      Text1.Text = I   '文本框显示循环的情况,I 的值的变化
      DoEvents
   Else
      X = I
      Exit Do
   End If
'在这写循环中要执行的功能代码
Loop While I < 500000    '设置要循环的次数,修改500000的值就可以
End Sub

Private Sub Command1_Click()  '按钮控制循环的暂停与开始
BO = Not BO   ' 改变DO对象的值
DoNext
End Sub

Private Sub Form_Load()
BO = True   'BO对象初值
X = 0
End Sub
已经调试过一个没有问题。
baidu_34733639 2016-05-15
  • 打赏
  • 举报
回复
我已经实现,就像楼上说的,全部放到一个调用里面,用timer实施
baidu_34733639 2016-04-22
  • 打赏
  • 举报
回复
我知道怎么弄了 调用全部放到timer里面,就可以实现暂停,这验证码》》》》》》》》》》
baidu_34733639 2016-04-22
  • 打赏
  • 举报
回复
謝謝,我試試看,估計還要在do while之前使用doevents,先釋放,不要點不了按鈕
一如既往哈 2016-04-20
  • 打赏
  • 举报
回复
试试: Private Sub Command1_Click() bpause=not bpause end sub ..... ''在下面这句后面加 '在这里判断timer才会暂停程序,但怎么和 Command1_Click联系 do while bpause doevents loop .....

7,762

社区成员

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

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