精易论坛
标题: 警告,不要用系统自带的寻找文本(strstr)来用.存在BUG!! [打印本页]
作者: 呵呵仙 时间: 2023-10-16 00:01
标题: 警告,不要用系统自带的寻找文本(strstr)来用.存在BUG!!
拿"的"字的第2字节,作"母"的第1字节来用!?
目测,微软就是简单粗暴的1字节1字节对比.然后达到字符数了.就返回!
应该是要先判断当前这个字是双字节,还是单字节.才开始对比才合理的!
快速文本对象也存在这个问题!造成"对象.替换子文本()","对象.替换文本()","对象.寻找文本()"也出现这个错误,要么就是调用了这API.
要么就是作者算法思路错误!
变量名 | 类 型 | 静态 | 数组 | 备 注 |
A | 文本型 | | |
B | 文本型 | | |
A指针 | 整数型 | | |
B指针 | 整数型 | | |
所在位置 | 整数型 | | |
A =
“我的盖子”B =
“母亲”A指针 =
取变量数据地址 (A
)B指针 =
取变量数据地址 (B
)所在位置 =
strstr (A指针, B指针
) - A指针 + 1
调试输出 (“母亲所在位置:”, 所在位置,
到字节集 (A
),
到字节集 (B
))
A =
“我的盖子”B =
“盖子”A指针 =
取变量数据地址 (A
)B指针 =
取变量数据地址 (B
)所在位置 =
strstr (A指针, B指针
) - A指针 + 1
调试输出 (“盖子所在位置:”, 所在位置
)|
strstr | 整数型 | |
|
msvcrt.dll |
|
@strstr |
|
被搜寻的文本指针 | 整数型 | | |
要搜寻的文本指针 | 整数型 | | |
作者: 帅气与大侠 时间: 2023-10-16 00:12
a =
“我的盖子”b =
“母亲”调试输出 (到字节集 (a
),
到字节集 (b
))
调试输出 (寻找文本 (a, b, ,
假))
返回 (0
)
作者: 道易有道 时间: 2023-10-16 00:13
没看懂,字符串没有母亲这个,是怎么搜索到并且给出位置的?
作者: 呵呵仙 时间: 2023-10-16 00:16
注意看标题,是strstr函数
作者: 帅气与大侠 时间: 2023-10-16 00:17
难道我的核心库版本和大家的不一样吗?还是电脑环境不一样?
为什么我这边寻找文本返回-1呢
作者: 帅气与大侠 时间: 2023-10-16 00:18
之前论坛有易友发了个帖子,说的是“我的盖子”和“母亲”的字节集存在相同部分,导致寻找文本出现bug错误
作者: 呵呵仙 时间: 2023-10-16 00:19
所以说系统API相关寻找文本不要用!
https://baike.baidu.com/item/strstr/811469?fr=ge_ala
作者: 呵呵仙 时间: 2023-10-16 00:29
不是易语言自带的寻找文本()啊!这个没问题.我只是提醒有用API函数代替易的寻找文本的朋友,注意,不要用API写!
作者: 一尘不染 时间: 2023-10-16 00:45
大佬,好久不见你更新你的模块了
作者: 算法艺术家 时间: 2023-10-16 01:11
大佬你终于出现了,没事发点好东西给大伙玩玩呗
作者: tian89 时间: 2023-10-16 02:53
开发系统函数一开始都是单字符英文的后来演变成宽字符才出现UBG的
作者: 查过 时间: 2023-10-16 07:27
感谢发布原创作品,精易因你更精彩!6666666666666
作者: 豆豆灰常开心 时间: 2023-10-16 07:32
感谢楼主分享!
作者: tian89 时间: 2023-10-16 07:47
我回复你信息后,又想起来以前我用过的函数没有出现你说的那问题
作者: 一指温柔 时间: 2023-10-16 08:44
膜拜大佬
作者: fxchenglong1 时间: 2023-10-16 09:06





作者: 嫂子 时间: 2023-10-16 09:43
相同代码没有出现 楼主所说情况

作者: mytiger 时间: 2023-10-16 10:11
本帖最后由 mytiger 于 2023-10-16 10:19 编辑
快速文本对象测试有此bug,精易模块的快速文本也有此bug.
作者: 梦想ol 时间: 2023-10-16 10:23
ntdll那个也有同样的问题,shell32测试可以
* “母亲返回指针:” | 0
* “母亲所在位置:” | -2228491 | 字节集:8{206,210,181,196,184,199,215,211} | 字节集:4{196,184,199,215}
* “盖子所在位置:” | 5
.版本 2
.DLL命令 strstr, 整数型, "shell32.dll", "StrStrA"
.参数 被搜寻的文本指针, 整数型
.参数 要搜寻的文本指针, 整数型
作者: fengyishen 时间: 2023-10-16 10:42
我觉得不能算BUG,只能说过于底层。传递的编码本来就该程序员控制。你被易语言影响思维了
作者: 给自己留一片天空 时间: 2023-10-16 11:13
新技能已get√
作者: qck易语言 时间: 2023-10-16 12:02
自带的寻找文本是instr吧?调试输出 (寻找文本 (“我的盖子”, “母亲”, , 假)),并没有把 勺盖了 当成 母亲 啊
作者: yokie 时间: 2023-10-16 14:07
他说的系统的API,不是易语言的寻找文本
作者: yokie 时间: 2023-10-16 14:12
时有这个问题
.版本 2
.支持库 spec
.子程序 _按钮1_被单击
.局部变量 A, 文本型
.局部变量 B, 文本型
.局部变量 A指针, 整数型
.局部变量 B指针, 整数型
.局部变量 所在位置, 整数型
A = “我的盖子”
B = “母亲”
A指针 = 取变量数据地址 (A)
B指针 = 取变量数据地址 (B)
所在位置 = strstr (A指针, B指针) - A指针 + 1
调试输出 (“母亲所在位置:”, 所在位置, 到字节集 (A), 到字节集 (B))
' ===================================
A = “我的盖子”
B = “盖子”
A指针 = 取变量数据地址 (A)
B指针 = 取变量数据地址 (B)
所在位置 = strstr (A指针, B指针) - A指针 + 1
调试输出 (“盖子所在位置:”, 所在位置)
调试输出 (“盖子所在位置:”, 寻找文本 (A, B, , 假))
调试输出 (“母亲所在位置:”, 寻找文本 (A, “母亲”, , 假))
[14:10:47] * “母亲所在位置:” | 4 | 字节集:8{206,210,181,196,184,199,215,211} | 字节集:4{196,184,199,215}
[14:10:47] * “盖子所在位置:” | 5
[14:10:47] * “盖子所在位置:” | 5
[14:10:47] * “母亲所在位置:” | -1
作者: 已注销571294 时间: 2023-10-16 14:28
提示: 作者被禁止或删除 内容自动屏蔽
作者: qck易语言 时间: 2023-10-16 16:30
哦 Windows系统啊
作者: j1angtaojy 时间: 2023-10-16 18:34
https://125.confly.eu.org/search.php?mo ... k%E5%9B%9E%E8%B0%83
作者: pipicool 时间: 2023-10-16 19:00
学习一下
作者: 杨明煜 时间: 2023-10-16 20:00
学习学习...........
作者: ttggnn 时间: 2023-10-16 22:09
支持开源~!感谢分享
作者: 查过 时间: 2023-10-17 07:37
下个学习一下
作者: 豆豆灰常开心 时间: 2023-10-17 07:42
感谢发布原创作品,精易因你更精彩!6666666666666
作者: 一指温柔 时间: 2023-10-17 09:49
感谢分享
作者: 大胜科技 时间: 2023-10-17 10:51
不错啊 算是有问题
作者: bianyuan456 时间: 2023-10-17 12:47
吓我一跳,还好不是易语言核心支持库的寻找文本
作者: wmv520 时间: 2023-10-17 12:55
学习学习...........
作者: 是可可吖 时间: 2023-10-17 16:39
感谢分享
作者: 查过 时间: 2023-10-18 07:49
下个学习一下
作者: 豆豆灰常开心 时间: 2023-10-18 07:54
全都是大佬~
作者: 李泽勇2 时间: 2023-10-18 08:30
请问还有没有代替命令?
作者: 一指温柔 时间: 2023-10-18 08:38
感谢分享,很给力!~
作者: ljx111 时间: 2023-10-18 09:09
感谢分享
作者: 查过 时间: 2023-10-19 07:59
感谢分享,很给力!~
作者: 豆豆灰常开心 时间: 2023-10-19 08:04
全都是大佬~
作者: hj97641 时间: 2023-10-19 08:23
感谢分享,很给力!~
作者: 396384183 时间: 2023-10-19 11:26
感谢您对论坛的支持
作者: 神女软件定制 时间: 2023-10-19 20:03
确实还没注意到过这个问题
作者: Yonder 时间: 2023-10-20 01:28
吓我一跳,我以为是易语言核心支持库的寻找文本



作者: 冰炎by 时间: 2023-10-20 16:15
感谢分享
作者: 冰棍好烫啊 时间: 2023-10-20 20:37
文本_寻找文本()
作者: chenyucheng 时间: 2023-10-21 16:17
变量名 | 类 型 | 静态 | 数组 | 备 注 |
A | 文本型 | | |
B | 文本型 | | |
A指针 | 整数型 | | |
B指针 | 整数型 | | |
所在位置 | 整数型 | | |
输出调试文本 (“下面是使用微软VC API的'寻找文本'(strstr):”) A =
“我的盖子”B =
“母亲”A指针 =
取变量数据地址 (A
)B指针 =
取变量数据地址 (B
)所在位置 =
寻找文本B (A指针, B指针
) - A指针 + 1
调试输出 (“母亲所在位置:”, 所在位置,
到字节集 (A
),
到字节集 (B
))
A =
“我的盖子”B =
“盖子”A指针 =
取变量数据地址 (A
)B指针 =
取变量数据地址 (B
)所在位置 =
寻找文本B (A指针, B指针
) - A指针 + 1
调试输出 (“盖子所在位置:”, 所在位置
) 输出调试文本 (“下面是使用系统核心支持库的'寻找文本':”) A =
“我的盖子”B =
“母亲”所在位置 =
寻找文本 (A, B, ,
假)调试输出 (“母亲所在位置:”, 所在位置,
到字节集 (A
),
到字节集 (B
))
A =
“我的盖子”B =
“盖子”所在位置 =
寻找文本 (A, B, ,
假)调试输出 (“盖子所在位置:”, 所在位置
)|
寻找文本B | 整数型 | |
|
msvcrt.dll |
|
@strstr |
|
被搜寻的文本指针 | 整数型 | | |
要搜寻的文本指针 | 整数型 | | |
作者: taohongsen1990 时间: 2023-10-22 11:56
C++ string 类型中的 find挺好用的,可以试试那个
作者: 水草兄弟 时间: 2023-10-28 10:26
嘴下留情勿喷
作者: accet 时间: 2023-10-30 00:41
因为你用是易语言的寻找文本.
而不是API.. 人家说的BUG 是调用API出现的.
要知道易语言虽慢 但是为了中文的稳定性帮你减少了多少BUG 这些当然要花掉时间代价的.
那些一天天 就是要快要快。。 就会那样去用API 或是 汇编的 可能自己就样的坑了..
作者: yanga9 时间: 2025-2-3 09:23
吓得我赶快测试了一遍我的文本替换。。
欢迎光临 精易论坛 (https://125.confly.eu.org/) |
Powered by Discuz! X3.4 |