TC官方合作论坛

 找回密码
 立即注册
查看: 622|回复: 9

[问题] 不懂这个程序那里出错求高手指点

[复制链接]
发表于 2013-10-11 23:23:55 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

[attachimg]12076[/attachimg]
空间 测试
//默认空间
变量 a,b,c,线程句柄
//先定义一个函数 线程方法
功能 减法()
   
    c=a-b
    返回 c
功能结束

功能 加法()
    c=a+b
    返回 c
功能结束

功能 开始_点击()
    如果(单选框.获得状态("单选框0"))
        
        线程句柄=线程.开启("测试.加法","c")
    如果结束
    如果(单选框.获得状态("单选框1"))
        测试.减法()
        
        
    如果结束
   
    标签.设置文本("标签3",c)
   
   
功能结束




//退出按钮_点击操作
功能 退出_点击()
   
    辅助.退出()
功能结束




功能 单选框0_点击()
    //这里添加你要执行的代码
    标签.设置文本("标签1","+")
    标签.设置文本("标签2","=")
   
   
功能结束

功能 单选框1_点击()
    //这里添加你要执行的代码
    标签.设置文本("标签1","一")
    标签.设置文本("标签2","=")
   
功能结束


功能 编辑框0_内容改变()
    //这里添加你要执行的代码
   
    a=编辑框.获得文本("编辑框0")
   
功能结束



功能 编辑框1_内容改变()
    //这里添加你要执行的代码
   
    b=编辑框.获得文本("编辑框1")
   
功能结束

空间结束

运行程序后

[attachimg]12077[/attachimg]
然后问题来了,当我选择加法选项,并在编辑框当中输入数值并按下开始的时候尽然是这样。。。。

[attachimg]12078[/attachimg]
标签3的值竟然是空的,然后再点击一下才出现值

[attachimg]12079[/attachimg]
但是当我改变编辑框的值的时候并点击开始的时候,结果还是3

[attachimg]12080[/attachimg]
但是再点一下就会变成4,也就是说要点击2下,标签3才能出现对的值,不知道这是为什么求告手指点

[attachimg]12081[/attachimg]
但是用减法则可以,因为减法没有用线程调用,而是用空间调用。但是如果把自定义的减法功能中的程序改下则会一次得出正确的标签3的值:
我把 功能 加法()改成
c=a+b
返回 标签.设置文本("标签3",c)
运行程序并设置2个编辑框的值

[attachimg]12082[/attachimg]
然后点击开始,标签3则会出现对的值2,这样只要点击1下就行

[attachimg]12083[/attachimg]
还有我为此特意把功能加法()程序的返回值改为返回c的值并在功能 开始_点击()中在设置标签3的前面加了一个输出消息辅助框c的程序
功能 开始_点击()
    如果(单选框.获得状态("单选框0"))
        
        线程句柄=线程.开启("测试.加法","c")
    如果结束
    如果(单选框.获得状态("单选框1"))
        测试.减法()
        
        
    如果结束
     辅助.消息框(c)   
    标签.设置文本("标签3",c)
   
   
功能结束
用来查看c的值结果第一次点击出现了


[attachimg]12084[/attachimg]
在弹出的消息框中点击确定后变成下面的结果
[attachimg]12085[/attachimg]
然后再把2个编辑框改为 1     2  然后再点开始
结果消息框弹出的是2
然后在弹出的消息框点击确定后
标签3的值就变成了3
我想问问这是怎么回事,还有就算把功能 加法()的返回值改为:
返回 标签.设置文本("标签3",c)
消息框中c值也是一样
求高手讲解,为我解惑
不胜感激。
          新手
回复

使用道具 举报

 楼主| 发表于 2013-10-11 23:30:02 | 显示全部楼层
这是第一个图片
第2个

由于一次不能上传那么多图片所以我分开上传

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-11 23:32:26 | 显示全部楼层
第3个


第4个

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-11 23:37:32 | 显示全部楼层
.。。好像不能上传了,各位告诉可以把我的程序复制一下自己运行一下就知道了,求高手指点
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-11 23:52:02 | 显示全部楼层
求高手啊
回复 支持 反对

使用道具 举报

发表于 2013-10-12 06:04:10 | 显示全部楼层
是因为你线程中传参"c”的原因,开启线程,就已经把参数c赋值为空了,
回复 支持 反对

使用道具 举报

发表于 2013-10-12 06:07:32 | 显示全部楼层
第二次运行,c的值是已经3了,第一次,a+b把c赋值了
回复 支持 反对

使用道具 举报

发表于 2013-10-12 06:20:21 | 显示全部楼层
看你还是多理解下全局变量和局部变量的区别,和线程。线程传参不是这样传的,用全局变量传参就没必要了,全局变量在线程之间中是互通的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-12 12:08:56 | 显示全部楼层
回复 8楼kssh081的帖子

首先非常感谢,您的指点。
我对你所说的理解是:
线程句柄=线程.开启("测试.加法","")因为参数为空,所以第一次运行的时候c的值为空,可是为什么我在标签.设置文本("标签3",c)前面加个辅助.消息框(c)这个程序之后
辅助消息框c的值为空,而标签.设置文本("标签3“,c)的值为两个编辑框中的数值相加的结果呢?
如果不在标签.设置文本("标签3“,c)前面加任何调用c的值那么这个程序的运行结果为什么总要点击2次才能得出正确的结果呢?
还有我的功能 加法(),如果改成下面的形式:

功能 加法()
c=a+b
返回 标签.设置文本("标签3",c)
为什么这样就只要点击一次就能得出正确的结果?
希望您能详细的为我解答,谢谢。
回复 支持 反对

使用道具 举报

发表于 2013-10-12 17:21:46 | 显示全部楼层
你放入了消息框,点击确定之后,后面的程序继续才执行,就相当于第二次执行
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-9-24 01:42 , Processed in 0.048061 second(s), 24 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表