觅风论坛

标题: 更快获取文本长度的方法 [打印本页]

作者: undefined    时间: 2021-6-19 22:22
标题: 更快获取文本长度的方法
先吐槽一下,易语言的文本型数据结构也是够了,居然不记录文本的长度信息标准库的取本文长度,相当于每次调用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)







欢迎光临 觅风论坛 (https://www.eyyba.com/) Powered by Discuz! X3.4