TC官方合作论坛

标题: 线程传参是不是只能传递一个参数? [打印本页]

作者: 这论坛不错    时间: 2014-3-13 15:51
标题: 线程传参是不是只能传递一个参数?
本帖最后由 这论坛不错 于 2014-3-13 16:13 编辑

我调用的功能函数传递了2个参数能正常开启,换成线程的方式传递2个参数就报错,是不是线程只支持传递一个参数呢?


测试.123(dm,"aaa")-------------------开启正常
线程.开启("测试.123",dm,"aaa")--------------错误信息:(dm,"aaa")是错误的实参数列表,可能是参数名重定义,或者错误的默认值



功能 123(dm,字符串)
    dm.SetClipboard(字符串 )
    dm.KeyPress(13)
    dm.SendString2(hwnd,字符串 )
    dm.KeyPress(13)
功能结束



作者: 蓝色侠客    时间: 2014-3-13 16:05
不一定,看你开启的线程里面函数需要吧
作者: 这论坛不错    时间: 2014-3-13 16:13
蓝色侠客 发表于 2014-3-13 16:05
不一定,看你开启的线程里面函数需要吧

测试.123(dm,"aaa")-------------------开启正常
线程.开启("测试.123",dm,"aaa")--------------错误信息:(dm,"aaa")是错误的实参数列表,可能是参数名重定义,或者错误的默认值


功能 123(dm,字符串)
    dm.SetClipboard(字符串 )
    dm.KeyPress(13)
    dm.SendString2(hwnd,字符串 )
    dm.KeyPress(13)
功能结束
作者: 今非    时间: 2014-3-13 17:24
请采纳如果我的回答帮助到了你 !


  1. //--说明:请使用这种方法开启线程
  2. //---参数1&“,”&参数2&","&参数3   逗号作为分隔符
  3. //--在功能里面分割出来就可以了
  4. 线程.开启("测试.123",dm&","&"aaa")
复制代码


愿你成功----!不忘采纳!


温馨提示5 : 对于刚来的新手 , TC说明文档是必须学习的对象 , 有程序需要及问题可做为参考
作者: 这论坛不错    时间: 2014-3-13 20:01
今非 发表于 2014-3-13 17:24
请采纳←如果我的回答帮助到了你 !

哥么,运行的时候不报错,但是开启脚本后叫报错,类型不匹配,你确定TC支持用连接符来分割参数?
作者: 小西    时间: 2014-3-13 20:15
以线程开启方式,只能传递一个参数.
但是为了实现需要,可以对这个传递的参数进行处理.
比如说以某标志做为分割符,将多个参数暂是组合成一个参数进行传递.
而在线程开启的功能里,则做相应的处理,来还原成相应的多个参数.
作者: kam    时间: 2014-3-13 20:27
线程.开启("测试.123",dm&","&"aaa")
功能 123(参数)
返回值
字符串.分割(参数,",",返回值)
功能结束

请注意传参中连接符后 "," 这几个符号,实际分隔符是逗号
4楼的意思大概是这个样子
作者: 今非    时间: 2014-3-13 21:00
这论坛不错 发表于 2014-3-13 20:01
哥么,运行的时候不报错,但是开启脚本后叫报错,类型不匹配,你确定TC支持用连接符来分割参数? ...

我确定哈-----你详细研究下
作者: 这论坛不错    时间: 2014-3-13 21:05
小西 发表于 2014-3-13 20:15
以线程开启方式,只能传递一个参数.
但是为了实现需要,可以对这个传递的参数进行处理.
比如说以某标志做为分 ...

新手消化不了,能举个简单的例子吗?线程开启的功能函数如果有多个参数,使用连接符拼在一起,传到功能函数里面,再分割?分割完保存到一维数组里面?然后通过数组访问?
作者: 这论坛不错    时间: 2014-3-13 21:05
kam 发表于 2014-3-13 20:27
线程.开启("测试.123",dm&","&"aaa")
功能 123(参数)
返回值

新手消化不了,能举个简单的例子吗?线程开启的功能函数如果有多个参数,使用连接符拼在一起,传到功能函数里面,再分割?分割完保存到一维数组里面?然后通过数组访问?
作者: 348625228    时间: 2014-3-13 21:14
分割成数组
返回值【0】
返回值【1】
作者: 小西    时间: 2014-3-13 21:52
参数1=dm
参数2="aaa"
参数=参数1&"|"&参数2
线程.开启("测试.123",参数)

功能 123(参数)
str.split(参数,"|",Array)
dm=Array[0]
符串=Array[1]
    dm.SetClipboard(字符串 )
    dm.KeyPress(13)
    dm.SendString2(hwnd,字符串 )
    dm.KeyPress(13)
功能结束
作者: 这论坛不错    时间: 2014-3-13 22:04
小西 发表于 2014-3-13 21:52
参数1=dm
参数2="aaa"
参数=参数1&"|"&参数2

十分感谢,原来线程开启之前要把参数,参数1,参数2处理一下,这样的处理方法让我学会了。
作者: kam    时间: 2014-3-13 23:50
  1. 空间 测试

  2. 变量 线程句柄,传入参数="我是参数1,我是参数2,我是参数3"

  3. 功能 线程(参数)
  4.     返回值,大小
  5.     字符串.分割(参数,",",返回值)
  6.     数组空间.大小(返回值,大小)
  7.     i=0
  8.     遍历(i=0;i<大小;i++)
  9.         辅助.消息框(返回值[i])
  10.     遍历结束
  11. 功能结束

  12. 功能 开始_点击()
  13.     线程句柄=线程.开启("测试.线程",传入参数)
  14. 功能结束


  15. 功能 退出_点击()
  16.     线程.关闭(线程句柄)
  17. 功能结束

  18. 空间结束

复制代码

作者: 这论坛不错    时间: 2014-3-15 15:59
kam 发表于 2014-3-13 23:50

谢谢你,不过我觉得16楼小西版版的方法更好用哦,而且分割完也不一定要获得数组的大小和遍历吧?
作者: kam    时间: 2014-3-15 21:02
这论坛不错 发表于 2014-3-15 15:59
谢谢你,不过我觉得16楼小西版版的方法更好用哦,而且分割完也不一定要获得数组的大小和遍历吧? ...

你理解能力的问题,我和他的方法是一样的.
作者: kam    时间: 2014-3-15 21:03
这论坛不错 发表于 2014-3-15 15:59
谢谢你,不过我觉得16楼小西版版的方法更好用哦,而且分割完也不一定要获得数组的大小和遍历吧? ...

获得数组的大小和遍历是为了处理传参里参数个数不固定的时候用到的.
作者: 这论坛不错    时间: 2014-3-18 21:59
kam 发表于 2014-3-15 21:03
获得数组的大小和遍历是为了处理传参里参数个数不固定的时候用到的.

嗯,你的方法和他的确实是一样的,我看明白了,也测试过了,谢谢

这个问题你有办法解决吗?没有大神能帮忙。。。
http://bbs.tyuyan.com/thread-39518-1-1.html

作者: 250366688    时间: 2014-4-22 02:01
其实你很可爱,线程传参只支持使用字符串,你把变量拼接成字符串是可以的,但是你要考虑到分割,比如你“a”字符串和数字1进行连接的话那么是“a”&1 那么线程接到的传参就是“a1”,所以你还要处理成字符串分割,
成“a”,然后再给“1”进行类型转换,变成1数字型的,当然一个数字 tc有时候并不明显,但是比如你要传递的是线程句柄,123456 那么你就得把分割出来的数组里边对应123456字符串所在的数组位置,拿出来进行类型转换
作者: xijiahang    时间: 2014-4-28 17:38
线程.开启("测试.123",dm&","&"aaa")
功能 123(参数)
返回值
字符串.分割(参数,",",返回值)
功能结束

请注意传参中连接符后 "," 这几个符号,实际分隔符是逗号
4楼的意思大概是这个样子




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1