易语言启动线程传递多个类型的数据变量

本文介绍如何在易语言中使用线程传递包括文本和整数在内的多种类型的参数,通过构造变量数组实现复杂的数据传递,确保线程间数据正确交换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

易语言的启动线程默认是传递一个整数的,在 易语言启动线程传递文本参数中,我们讲解了传递文本参数,今天,我们示范传递多个变量
思路是我们把要传递的变量定义成一个整数型数组,传递的是参数内容的内存地址指针,由于传递的参数可能是文本和整数,所以我们要封装两个取文本指针地址和取整数指针地址,文本和整数在内存中的字节是不同的。

取文本指针地址

申请空间并获取一个文本指针地址!

511遇见(www.511yj.com) 

.版本 2
.支持库 spec
 
.子程序 取文本指针地址, 整数型, 公开, 申请空间并获取一个指针地址!
.参数 文本, 文本型
.局部变量 指针地址, 整数型
 
指针地址 = 申请内存 (取文本长度 (文本) + 1, 真)
写到内存 (文本, 指针地址, 取文本长度 (文本))
返回 (指针地址)

取整数指针地址

 申请空间并获取一个整数指针地址

511遇见(www.511yj.com) 

.版本 2
.支持库 spec
 
.子程序 取整数指针地址, 整数型, 公开, 申请空间并获取一个指针地址
.参数 数值, 整数型
.局部变量 指针地址, 整数型
 
指针地址 = 申请内存 (4, 真)
写到内存 (数值, 指针地址, 4)
返回 (指针地址)

取构造变量数组值_整数型

从构造变量数组 的数组堆里,取出指定成员整数的指针地址来获得最终数据 

 511遇见(www.511yj.com)

.版本 2
.支持库 spec
 
.子程序 取构造变量数组值_整数型, 整数型, 公开, 从 构造变量数组 的数组堆里,取出指定成员的指针地址来获得最终数据
.参数 指针地址, 整数型
.参数 索引值, 整数型
.参数 是否释放, 逻辑型, 可空, 建议用完后进行释放
.局部变量 数据指针地址, 整数型
.局部变量 结果_整数型, 整数型
 
数据指针地址 = 指针到整数 (指针地址 + (索引值 - 1) × 4)
结果_整数型 = 指针到整数 (数据指针地址)
.如果真 (是否释放)
    释放内存 (数据指针地址)
.如果真结束
返回 (结果_整数型)

取构造变量数组值_文本型

 从构造变量数组 的数组堆里,取出指定成员文本的指针地址来获得最终数据 

511遇见(www.511yj.com) 

.版本 2
.支持库 spec
 
.子程序 取构造变量数组值_文本型, 文本型, 公开, 从 构造变量数组 的数组堆里,取出指定成员的指针地址来获得最终数据
.参数 指针地址, 整数型
.参数 索引值, 整数型
.参数 是否释放, 逻辑型, 可空, 建议用完后进行释放
.局部变量 数据指针地址, 整数型
.局部变量 结果_文本型, 文本型
 
数据指针地址 = 指针到整数 (指针地址 + (索引值 - 1) × 4)
结果_文本型 = 指针到文本 (数据指针地址)
.如果真 (是否释放)
    释放内存 (数据指针地址)
.如果真结束
返回 (结果_文本型)

构造变量数组

将所有的指针地址,存放到一个 指针数组内! 

511遇见(www.511yj.com) 

.版本 2
.支持库 spec
 
.子程序 构造变量数组, 整数型, 公开, 原理:将所有的指针地址,存放到一个 指针数组内!
.参数 变量地址数组, 整数型, 数组
.局部变量 i, 整数型
.局部变量 当前地址, 整数型
.局部变量 指针地址, 整数型
 
指针地址 = 申请内存 (取数组成员数 (变量地址数组) × 4, 真)
.计次循环首 (取数组成员数 (变量地址数组), i)
    当前地址 = 变量地址数组 [i]
    写到内存 (当前地址, 指针地址 + (i - 1) × 4, 4)
.计次循环尾 ()
返回 (指针地址)

主线程

511遇见(www.511yj.com) 

.版本 2
.支持库 spec
 
.子程序 主线程
.参数 指针地址, 整数型
 
调试输出 (取构造变量数组值_文本型 (指针地址, 1, 真), “参数1内容”)
调试输出 (取构造变量数组值_文本型 (指针地址, 2, 真), “参数2内容”)
调试输出 (取构造变量数组值_文本型 (指针地址, 3, 真), “参数3内容”)
调试输出 (取构造变量数组值_整数型 (指针地址, 4, 真), “参数4内容”)
' 填真就会释放内存,如果再次调用就取不到,所以建议用完记得释放指针内存
释放内存 (指针地址)

启动线程调用传参

511遇见(www.511yj.com) 

.版本 2
.支持库 EThread
 
.局部变量 地址数组, 整数型, , "0"
 
加入成员 (地址数组, 取文本指针地址 (“我是第一个参数!”))
加入成员 (地址数组, 取文本指针地址 (“我是第二个参数!”))
加入成员 (地址数组, 取文本指针地址 (“我是第三个参数!”))
加入成员 (地址数组, 取整数指针地址 (66666))
启动线程 (&主线程, 构造变量数组 (地址数组), )

源码:易语言启动线程传递多个类型变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

511遇见

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值