抽奖小程序的死循环问题

cwchen21st 2006-01-24 08:33:25
我想用pb编个随机抽奖的小程序,类似于电视上抽取手机号码,显示的号码要不断跳跃,按下某个键时停止。可我不知道怎么实现让数据跳跃显示,老是要死循环,请教如何解决(要读取的数据存在数据库中或文本文档中都不是问题,只要让它跳跃显示时不死循环就可以了)
...全文
271 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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()语句就不会死循环了.
这是一个共享软件,除了可以在本站下载外,你还可以在http://dl.dbank.com/c0e431w4g9# 下载。其主要功能如下: 1、内置特等奖、一等奖~五等奖6个级别的奖项和1个自定义级别的奖项,抽奖顺序没有限制。 2、对于任意一等奖来说,可以一次抽取任意数量的奖项; 3、背景、解码用户可自行调整; 4、抽奖背景音乐用户可换; 5、可以在抽奖过程中显示中奖者的照片; 6、抽奖过程中可以显示用户所在的部门信息; 7、对于要求必须在场的抽奖,当中奖人不在场时可以做弃权处理; 8、抽奖结果立即存入Excel“抽奖结果”工作表中。 使用说明及注意事项   1、抽奖前请在Excel“工具”-“宏”-“安全性”中将宏的安全级别设置为低,然后关闭Excel重新打开,否则无法运行抽奖程序。 2、本程序支持六个固定级别的奖项设置和一个自定义的奖项设置。 3、抽奖顺序有两种,即先小奖后大奖或相反。这个设置仅用于初始化《抽奖》工作表中的奖项设置,抽奖过程中需手动在《抽奖》工作表中切 换抽奖级别。 4、本程序支持两种抽奖方法:每次抽取一组中的全部名额,或每次抽取指定的若干名额。但是推荐一次抽取1个,因为大余一个时只能显示最 后一名中奖者的照片,且显示众多中奖者的名字时布局不是很美观。 5、单项最多可设 5000 名中奖者,中奖者总数不能多于候选人数,否则在抽取最后一人时会出现死循环。 6、请在《候选名单》工作表中录入所有候选项。候选人仅受Excel行数限制,输入时请连续纵向输入,不留空行。 7、在《抽奖》工作表中点击“弃权”按钮时该组中奖的所有的人将被自动剔除,后面的抽奖中将不再参与抽奖。 8、当设置的奖项总数+弃权总数大于等于抽奖候选人总数时,程序将出现死循环。 9、抽奖一旦开始,请完成整个抽奖过程,不要中途退出程序或追加候选人名单。 10、本程序不支持重复中奖,中奖的人不计入下一轮抽奖中。     关于《抽奖》工作表的界面设置的几点说明: 1、修改《抽奖》工作表的界面时需要先解锁工作表。具体方法:“工具”-“保护”-“解锁工作表”。修改完后最好锁定工作表。 2、抽奖时可隐藏Excel航标、列表。具体方法:“工具”-“选项”-“视图”-“行号列号”,取消勾选前面的复选框。 3、在调整《抽奖》工作表时,不可插入、删除行或列。 4、一般地,修改《抽奖》工作表布局可以通过调整第一行的行高或第一列的列宽来实现。如果你要对控件进行详细布局设计(例如改变控件大 小),你可以通过控件设计模式来实现。具体方法:“视图”-“工具栏”-“退出设计模式”。 这时,你可以随意拖动按钮或照片控件的位 置及大小。调整完成后必须退出设计模式(将“退出设计模式”前面的勾取消掉)。系统的默认位置为D2单元格。 5、为满足多人抽奖的需要,《抽奖》工作表中的D5:D65536(即D列中从第5行到65535行)用来显示中奖者姓名。该列采用了条件格式,用特殊 的格式来显示中奖者的姓名。如果你需要更改这个样式,可在编辑工具栏(显示fx的那个工具栏)最左边的“名称框”中选择“ResultDisplay” 或输入D5:D65536并回车,这时这些单元格会被自动选上,然后从工具栏中的“格式”-“条件格式”中修改。 6、《抽奖》工作表中的下拉列表根据设置自动生成,请不要更改其下拉列表的内容。 7、全屏显示。具体方法:“视图”-“全屏显示”。 8、更换背景。具体方法:“格式”-“工作表”-“背景”,选择你要的背景图片即可。 9、更换默认照片。具体方法:替换photo文件夹下面的“none.jpg”这个图片文件即可。 10、若要在抽奖过程中显示中奖者的照片,则需把抽奖人的照片放到photo文件夹下面,同时在《候选名单》工作表的C列给出照片名。 11、若要更改在抽奖过程中播放的声音,可以替换Music文件夹下面的start.wav、finish.wav文件。
这里只给大家提供一个部分免费(奖项数<=10时)的程序供参考。 其主要功能如下: 1、内置特等奖、一等奖~五等奖6个级别的奖项和1个自定义级别的奖项,抽奖顺序没有限制。 2、对于任意一等奖来说,可以一次抽取任意数量的奖项; 3、背景、界面用户可自行调整; 4、抽奖背景音乐用户可换; 5、可以在抽奖过程中显示中奖者的照片; 6、抽奖过程中可以显示用户所在的部门信息; 7、对于要求必须在场的抽奖,当中奖人不在场时可以做弃权处理; 8、抽奖结果立即存入Excel“抽奖结果”工作表中。 使用说明及注意事项   1、抽奖前请在Excel“工具”-“宏”-“安全性”中将宏的安全级别设置为低,然后关闭Excel重新打开,否则无法运行抽奖 程序。 2、本程序支持六个固定级别的奖项设置和一个自定义的奖项设置。 3、抽奖顺序有两种,即先小奖后大奖或相反。这个设置仅用于初始化《抽奖》工作表中的奖项设置,抽奖过程中需手动在《 抽奖》工作表中切换抽奖级别。 4、本程序支持两种抽奖方法:每次抽取一组中的全部名额,或每次抽取指定的若干名额。但是推荐一次抽取1个,因为大余一 个时只能显示最后一名中奖者的照片,且显示众多中奖者的名字时布局不是很美观。 5、单项最多可设 5000 名中奖者,中奖者总数不能多于参与人数,否则在抽取最后一人时会出现死循环。 6、请在《参与名单》工作表中录入所有参与抽奖的人员。参与人数仅受Excel行数限制,输入时请连续纵向输入,不留空行。 7、在《抽奖》工作表中点击“弃权”按钮时该组中奖的所有的人将被自动剔除,后面的抽奖中将不再参与抽奖。 8、当设置的奖项总数+弃权总数大于等于抽奖参与人总数时,程序将出现死循环。 9、抽奖一旦开始,请完成整个抽奖过程,不要中途退出程序或追加参与人名单。 10、本程序不支持重复中奖,中奖的人不计入下一轮抽奖中。  

1,108

社区成员

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

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