精易论坛

标题: 有什么办法在线程启动时把文本型数组当参数传给函数 [打印本页]

作者: HccCmHj    时间: 2025-3-28 16:49
标题: 有什么办法在线程启动时把文本型数组当参数传给函数
易语言 线程_启动 的函数不能带文本数组参数,有什么办法在线程启动时把文本型数组当参数传给函数?

作者: ShiSoul    时间: 2025-3-28 16:49
HccCmHj 发表于 2025-3-28 16:59
我一个11万数据的数组分割成11个文本数组

传索引  用索引取数组  
作者: b0y    时间: 2025-3-28 16:52
文本数组设置为程序集或全局变量  子线程直接用不就行了
作者: 刘文明乌猛    时间: 2025-3-28 16:54
我之前也遇到过这个问题 我的解决办法是 把文本数组分割出来 全部合并成一条文本 传过去 再函数里面再处理
作者: HccCmHj    时间: 2025-3-28 16:59
b0y 发表于 2025-3-28 16:52
文本数组设置为程序集或全局变量  子线程直接用不就行了

我一个11万数据的数组分割成11个文本数组,子线程无法知道执行哪个数组把
作者: HccCmHj    时间: 2025-3-28 16:59
刘文明乌猛 发表于 2025-3-28 16:54
我之前也遇到过这个问题 我的解决办法是 把文本数组分割出来 全部合并成一条文本 传过去 再函数里面再处理 ...

我一个11万数据的数组分割成11个文本数组
作者: HccCmHj    时间: 2025-3-28 17:03
我尝试着用 取变量地址的方法传数组指针到函数里,但为什么易语言 文本型数组取变量地址获得的指针是错误的呢?
作者: 呵呵仙    时间: 2025-3-28 17:04
把数组的堆栈指针脱离出来,在线程中再用变量挂接此指针.
大概和这个一样原理!https://125.confly.eu.org/forum.php?mod ... 14807602&extra=
作者: b0y    时间: 2025-3-28 17:04
你就用一个数组 传给子线程索引就行了啊
作者: 凌哥    时间: 2025-3-28 17:30
https://125.confly.eu.org/forum.php?mod ... 14164465&extra=
作者: 呵呵仙    时间: 2025-3-28 17:55
指针_文本数组脱离堆栈 .e (5.6 KB, 下载次数: 0)

好像改一下,也不也就1分钟的事.^_^


作者: 呵呵仙    时间: 2025-3-28 18:03

线程中用法!

作者: bysy    时间: 2025-3-28 18:09
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
子程序名返回值类型公开备 注
__启动窗口_创建完毕  
变量名类 型静态数组备 注
arr文本型0
arr = 分割文本 (“12,33,44,55”, “,”, )
启动线程 (&ts, 数组到指针 (arr), )
子程序名返回值类型公开备 注
ts  
参数名类 型参考可空数组备 注
指针 
变量名类 型静态数组备 注
数组文本型0
清除数组 (数组)  ' 本项指令可不用
还原 (指针, 数组)  ' 前提接收的必须是空数组
调试输出 (数组)
子程序名返回值类型公开备 注
还原  
参数名类 型参考可空数组备 注
数组指针 
接收数组通用型要空数组
变量名类 型静态数组备 注
p  
' __asm{
' ; mov eax,接收数组
' ; mov eax,[eax]
' ; mov p,eax
' }
' ; 调试输出 (释放内存HeapFree (取堆句柄 (), 0, p))
置入代码 ({ 139, 69, 12, 139, 0, 137, 69, 252 })
释放内存 (p)  ' 没有返回值但是需要释放 如果真是被清除数组指令清除后的返回假
' __asm{
' ; mov eax,数组指针
' ; mov ebx,接收数组
' ; mov [ebx],eax
置入代码 ({ 139, 69, 8, 139, 93, 12, 137, 3 })
' }
子程序名返回值类型公开备 注
数组到指针整数型 
参数名类 型参考可空数组备 注
数组通用型
申请内存 (8, )  ' 可以不用申请 你可以使用栈 在不会操作的时候建议申请吧
' __asm{
' ; mov dword [eax],1
' ; mov dword [eax+4],0
' ; mov ebx,数组
' ; mov ecx,[ebx]
' ; mov [ebx],eax
' ; mov eax,ecx
' ; leave
' ; ret __参数大小__
置入代码 ({ 199, 0, 1, 0, 0, 0, 199, 64, 4, 0, 0, 0, 0, 139, 93, 8, 139, 11, 137, 3, 137, 200, 201, 194, 4, 0 })
' }
返回 (0)


i支持库列表   支持库注释   
EThread多线程支持库
spec特殊功能支持库




补充内容 (2025-3-28 18:10):
在执行 数组到指针后 原线程指针 将会被清空 并且你不还原将会内存泄漏
作者: 1101469226    时间: 2025-3-28 19:23
用全局变量就行了,全局变量+许可证
作者: HccCmHj    时间: 2025-3-29 07:42
ShiSoul 发表于 2025-3-28 17:27
传索引  用索引取数组

哈哈哈,同道中人,我也是这么干的。还有易语言没有切片功能,什么都要自己写原生的




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4