导读
易语言5.6完美版,可静态编译,绿色无后门

学习易语言 讲究的是系统,如果你正在四处闲逛,你懂的永远是皮毛! 觅风论坛正在为每个困惑的对易语言 详细

[源码] 更快获取文本长度的方法

[复制链接]

微信扫一扫 分享朋友圈

undefined 发表于 2021-6-19 22:22:16 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

马上注册,结交更多易友,享用更多功能,让你轻松玩转觅风论坛。

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

x
先吐槽一下,易语言的文本型数据结构也是够了,居然不记录文本的长度信息标准库的取本文长度,相当于每次调用strlen... o(n)的复杂度。。卧槽。。这也太。。。


这里的思路很简单,首先易语言的文本型是一个4位的栈空间,内部指向一个char* 或 const char* 的结构
然后 xxx = "xxx" 类似C/C++ const char* 在全局区
xxx = 到文本/取空白文本... 这样的应该是LocalAlloc分配的动态内存


如果是第一种情况,不像C/C++ 没有sizeof的计算不出静态区大小 (或许有办法。。反正我没找到 。。。)
第二种情况 直接调LocalSize就行了




代码如下:


.版本 2


.子程序 string_spaceLength, 整数型, 公开
.参数 szText, 文本型
.局部变量 pszText, 整数型
.局部变量 nLength, 整数型


pszText = ptr_get_inner (szText) '可以用取变量数据地址代替。。
nLength = LocalSize (pszText)  
.如果真 (nLength ≤ 0)  
    nLength = 取文本长度 (szText) + 1  '目前没找到更好的部分。。。。可能是static const char*的结构???,反汇编的情况是直接MOV 到一个寄存器里面,就酱吧
.如果真结束


返回 (nLength)


回复

使用道具 举报

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

本版积分规则

关注我们:觅风论坛与你快乐分享

收藏本站

用心服务做个非盈利公益编程网站

www.eyyba.com

服务人:觅风论坛

Email:eyyba@foxmail.com

Powered by WWW.EYYBA.COM X3.4© 2001-2023 Inc.   版权所有   

觅风论坛  疆ICP备15020893号-1