开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 4804|回复: 0
收起左侧

[已回应] 数组_合并() 改进.

[复制链接]

结帖率:98% (48/49)
发表于 2020-12-30 17:07:12 | 显示全部楼层 |阅读模式   广东省广州市
[精易模块]  数组_合并() 命令 建议  增加   或    改进
https://bbs.125.la/forum.php?mod=viewthread&tid=14655347

感谢 @汉族 提供方案.


在此方案上我稍微优化了一下.


解决了内存长度上限,长度越界,释放内存的问题.




  
子程序名返回值类型公开备 注
数组_合并文本型 
参数名类 型参考可空数组备 注
欲处理数组文本型
间隔符文本型
变量名类 型静态数组备 注
返回文本文本型 
数据长度整数型 
指针地址整数型 
偏移整数型 
i整数型 
间隔符 = 选择 (是否为空 (间隔符), “,”, 间隔符)
' //
计次循环首 (取数组成员数 (欲处理数组), i)
数据长度 = 数据长度 + 取文本长度 (欲处理数组 [i])
计次循环尾 ()
数据长度 = 数据长度 (取数组成员数 (欲处理数组) - 1) × 取文本长度 (间隔符)
指针地址 = 内存_申请内存 (数据长度)
' //
计次循环首 (取数组成员数 (欲处理数组), i)
如果 (取数组成员数 (欲处理数组) = i)
数据长度 = 取文本长度 (欲处理数组 [i])
数据长度 = 取文本长度 (欲处理数组 [i] + 间隔符)
写到内存 (欲处理数组 [i] + 间隔符, 指针地址 + 偏移, 数据长度)
偏移 = 偏移 + 数据长度
计次循环尾 ()
' //
返回文本 = 取空白文本 (偏移)
内存_复制内存 (内存_取指针_文本型 (返回文本), 指针地址, 偏移)
内存_释放内存 (指针地址)
返回 (返回文本)
子程序名返回值类型公开备 注
内存_申请内存整数型 返回指针地址.
参数名类 型参考可空数组备 注
申请长度整数型申请内存区域的字节长度
返回 (HeapAlloc (GetProcessHeap (), 8, 申请长度))
子程序名返回值类型公开备 注
内存_释放内存逻辑型 释放对应的内存区域.
参数名类 型参考可空数组备 注
指针地址整数型
返回 (HeapFree (GetProcessHeap (), 0, 指针地址) ≠ 0)
子程序名返回值类型公开备 注
内存_复制内存 
参数名类 型参考可空数组备 注
存放指针整数型
欲复制指针整数型
复制长度整数型
RtlMoveMemory_整数型 (存放指针, 欲复制指针, 复制长度)
子程序名返回值类型公开备 注
内存_取指针_文本型整数型 取到的是变量在堆中的地址,和 取变量数据地址() 一样
参数名类 型参考可空数组备 注
文本文本型
置入代码 ({ 139, 69, 8, 139, 0, 201, 194, 4, 0 })
返回 (0)




评分

参与人数 2好评 +2 精币 +7 收起 理由
项目部004 + 1 + 5 共同努力,共同进步!~
汉族 + 1 + 2 共同交流,不同的方案 深受灵感 …… 妙啊~

查看全部评分

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

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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