为什么操作 ini 时文件名为中文和英文时结果不同
vb吧
全部回复
仅看楼主
level 7
GASUSYZ 楼主
当我文件名为英文或数字时结果后没有方框;当我文件名为中文加数字时结有好几个方框。这直接导至我的报错消息框不能显示正确。只给显示“错误:+文件路径。而“不存在,请检查........”不能显示。目前看来也能打开这个文件,暂未有其它 BUG。请问大侠,这是怎么回事,同样代码不同续果,谢谢🙏🙏
着重说明:代码是一样的,只是文件名有中文不同处
2024年01月23日 19点01分 1
level 7
GASUSYZ 楼主
🆙
2024年01月24日 02点01分 2
level 9
我没用过这个函数,但是你那个方框是空字符,因为你预留了255个字符的位置,但是没有全部用到。所以简单用len(sapp)截断一下字符串的长度就可以,没必要弄什么getprivate那一串。
2024年01月24日 05点01分 3
我试试不用定义字符个数,我的字符串最多也才 50 多个字
2024年01月24日 05点01分
不行,不定义字符个数报错闪退程序
2024年01月24日 09点01分
原来没注意不是ini的文件名。
2024年01月25日 00点01分
@klimaa 楼下的方法是正确的
2024年01月25日 01点01分
level 15
你之前提过这个问题
推测应该是与字符编码有关,就是什么英文占1个字节中文占2个字节之类的问题,估计可能是这样的:读取字符时,按照字节数进行读取,也就是每个中文字符读取2个字节,返回的retstr也是这个字节数,但是有中文字符时,实际的字符数就没有这么多了
解决方法就是在截掉后面的空字符时,不要用retstr确定截取长度(这个数值没啥用了),而是用InStr确定第一个空字符的位置,并截取到这个位置
2024年01月24日 12点01分 4
另外我说怎么看着你这个Left这么别扭呢,你是不是先用Slook接收了读取的字符串长度(也就是retstr才是字符串本身),然后又截取了左边的一部分又赋值给了Slook……你到底想让Slook是哪种类型的变量啊,混着用(不管是用Variant还是把数值存到String中)可不是什么好习惯
2024年01月24日 12点01分
@初音✨七奈 和你说的这没关系,哪怕换成两个变量也是一样的,我试了把 retstr 前变量换成其它的也不行。除非把 vb 设成不强制定义,取消 slook 的定义就不会出错。说倒到底 第二个 slook 能定义为 string,,也不是 dim slook
2024年01月24日 12点01分
我加了两句 label1=slook slook=Label1。用标签存一下再给 slook 值 在没有任何改动情况下正常了,现在要弄清第二 slook 到底定义成啥,反正不是 string 和 dim slook 两种都出错
2024年01月24日 12点01分
@GASUSYZ 好吧我可能说的有点多,不过我说的解决方法你看明白了没有?就是不用GetPrivateProfileString返回的长度了,而是用InStr确定这个长度,即改成:Slook = Left$(retstr, InStr(retstr, Chr(0)) - 1)
2024年01月24日 12点01分
level 13
换成W版可以解决
2024年01月25日 01点01分 5
我加了两句 label1=slook slook=Label1。用标签存一下再给 slook 赋值 在没有任何改动情况下正常了
2024年01月25日 01点01分
level 7
slook = Left(slook , InStr(slook , Chr(0)) - 1)
2024年01月26日 01点01分 6
1