回 帖 发 新 帖 刷新版面

主题:请问VB在文件中搜索字符串问题

请问怎么在VB中实现在二进制文件中搜索字符串?返回的是字符串在文件中的首次出现的位置.就是返回值要和用Ultraedit查出来的位置一样,试了好几种办法都不行.主要是返回值的问题,因为instr函数返回的值有时候汉字(二字节)只算一个字节,要怎么处理这种情况?用instrB也不行.

回复列表 (共4个回复)

沙发

我提供一种办法:
直接就用读入字符的方法把文件内容读入到一个字符型变量中,用instr函数查找,再用left函数取得从文首至查找处的字串,最后用API函数lstrlen获取这个字串的字节数,这个字节数也就是你所需要的“位置”

板凳

把要找的字符串转换成字节,也就是byte
然后读文件也是按字节读,要找的跟文件对比
Ultraedit也应该是这样做的,这样不用理会内容是什么

3 楼

instrB也不行?

[quote]
InStrB 函数作用于包含在字符串中的字节数据。所以 InStrB 返回的是字节位置,而不是字符位置。[/quote]

4 楼

明白了,试试



MsgBox InStrB(1, "11bb你我a", "a")
MsgBox InStr(1, "11bb你我a", "a") * 2 - 1

MsgBox InStrB(1, StrConv("11bb你我a", vbFromUnicode), StrConv("a", vbFromUnicode)) & "(你要的)"

我来回复

您尚未登录,请登录后再回复。点此登录或注册