导航
  • 主页
  • API 调用
  • 基础类
  • 控件与界面
  • 数据库相关
  • DataWindow
  • 项目管理
  • Web 应用
  • 脚本语言

抽奖小程序的死循环问题

cwchen21st 2006-01-24 08:33:25
我想用pb编个随机抽奖的小程序,类似于电视上抽取手机号码,显示的号码要不断跳跃,按下某个键时停止。可我不知道怎么实现让数据跳跃显示,老是要死循环,请教如何解决(要读取的数据存在数据库中或文本文档中都不是问题,只要让它跳跃显示时不死循环就可以了)
...全文
197 点赞 收藏 7
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jzhaohua 2006-01-26
死循环是代码有问题
用 Yield 释放消息队列

可以用实例变量控制结束,点结束按钮时候该变量设置为 false
循环是发现该变量为 false 则结束循环
回复
竣工算发有问题吧
回复
qxl12343 2006-01-24
方法有很多种。
一个窗体W,按钮B1,按钮B2
W搞一个实体变量:boolean lb_stop = true
B1的代码:
lb_stop = False
Do While True
if lb_stop then Exit
//显示号码
Yield()
Loop

B2的代码:lb_stop = true




回复
小辉 2006-01-24
没有用过pb
我觉得这种问题 用什么语言都是差不多吧
我是这么想的
下面用vb表示出来
你大概看一下吧

'第一: 声明一个全局变量
dim whileFlag as boolean

'第二:开始循环按钮的单击事件
Private Sub cmdStart_Click()
whileFlag = True
Do While whileFlag = True
'随即抽取一个手机号 并且显示出来
'停顿一个你需要的时间
'
Loop
End Sub

'第三:结束循环按钮的单击事件
Private Sub cmdEnd_click()
'标示位改变
whileFlag = false
End Sub
回复
rightyeah 2006-01-24
顶一下,支持qxl(教育改变生活,知识创造财富) lzheng2001(1加1)bbdx2523(08车001号)三位的见解,说白了就是加入一个消息处理的函数的入口而已。具体的内容,楼主应该研究一下windows的消息机制,就可以明白了
回复
bbdx2523 2006-01-24
楼上的正解...
yield()函数的功能:
将控制转移给其他图形对象,包括非PB对象.该函数检测消息队列,如果有消息,就把消息取出.利用这个函数可以在执行耗时较长的操作时把控制权转让给其他应用.
在正常情况下,PB应用程序在执行一段代码(比如函数或事件处理程序)的过程中不响应用户的操作.对耗时短暂的代码段来说,这种处理方式没有什么不妥,但是,如果某个代码侧面的执行耗时较长,应用程序又希望为用户提供更多的控制权,那么需要在这段代码中插入yield()函数,让用户能够进行其他操作,特别在循环执行的代码中更应该如此.
应用程序执行yield()函数后,如果发现消息队列中存在消息,它将允许对象处理这些消息,处理之后,继续yield()函数后面代码的执行.因此,代码中插入yield()函数将降低应用程序的运行效率.

这样的小程序,对效率没什么大的要求,影响可以忽略...
回复
lzheng2001 2006-01-24
在循环中加yield()语句就不会死循环了.
回复
发动态
发帖子
PowerBuilder
创建于2007-09-28

809

社区成员

PowerBuilder 相关问题讨论
申请成为版主
社区公告
暂无公告