VB读取文本提示“输入超出文件尾”问题

一般使用:
Open "config.ini" For Input As #1
Text1.Text = StrConv(InputB(LOF(1), 1), vbUnicode)
Close #1
读取文本内容,今天遇到一个配置文件,读取文本提示“输入超出文件尾”,将其内容复制到另一个文本文档中却又可以读取了,不明白为什么,向高手请教。
配置文件下载:
115提取码:dnglwake

望高手不吝赐教哈,谢谢啦。
这个config.ini配置文件是不能更改的,只是想把其中的Preview=1改作Preview=0,什么方法都好,希望不要破坏其编码,下次还可以把Preview=0改回Preview=1。

第1个回答  2011-07-22
Open "config.ini" For Binary As #1
Text1.Text = InputB(LOF(1), 1)
Close #1追问

不可以呀,之前也试过二进制打开,可是现实乱码啊。

追答

我改过了,你再看看

追问

高手一次帮忙到底吧,谢谢啦。
我想把配置文件中的Preview=1改作Preview=0,可是改后前面多了个?号,怎样才能解决呢?

Open "config.ini" For Binary As #1
a = InputB(LOF(1), 1)
Close #1
Open "config.ini" For Output As #1
a = Replace(a, "Preview=1", "Preview=0")
Print #1, a
Close #1

当然,就改个a=right(a,len(a)-1)也可以实现的,就是想知道为什么,呵呵。

追答

那个问号是因为ini文件的文件头2个字节是FF FE,用winhex打开就可以看到。

第2个回答  2011-07-22
将config.ini用记事本打开,另存为 编码改成ansi格式追问

试了下,确实可行,可是这个配置文件在用户手里,我改不了呀。

追答

加入a.txt 是Unicode编码的,转化成ansi的b.txt
cmd下,tpye a.txt >b.txt
实在不行,考虑用这个形式转化下

第3个回答  2011-07-23
我看了一下,你的这个文件是unnicode的,vb本身处理不了此编码格式,我这有一个专门处理此问题的类,你需要的话加我吧,我在百度hi给你留qq了本回答被提问者采纳
第4个回答  2011-07-22
可能是文件编码的问题
第5个回答  2011-07-23
操作ini文件,请使用GetPrivateProfileString一类的API。
示例见参考资料

参考资料:http://hi.baidu.com/cnoldjohn/blog/item/dd4cecb7ec7350f630add1c6.html

相似回答