用VB编的读入文本程序,有时能正常读入文本,有时不能,文本均由指定网站下载。请帮忙看一下代码有无问题
百思不得其解,刚下载的文本就无法读取数据,而将该文本打开后,修改任意内容,存盘后运行该代码,结果就正常。这到底是什么原因呢?...
百思不得其解,刚下载的文本就无法读取数据,而将该文本打开后,修改任意内容,存盘后运行该代码,结果就正常。这到底是什么原因呢?
展开
1个回答
展开全部
这是因为不同的操作系统对文本分行的定义是不同的,在windows系统中是“回车换行符”(即0D0A),而在Linux/Unix系统中则是“回车符”(0D),所以如果你的文本文件是从Linux/Unix系统的网站上下载的,直接拿到VB中就无法使用了(有些软件会自动识别,可惜VB的Line Input命令不行),而用记事本(或其他文本编辑器)打开后再保存,就会自动转换为Windows格式(或者说DOS格式)的文本了。
补充一点:如果不用Line Input的方式读入文本到数组,而是改用Split函数,那么就可自动读入非DOS格式的文本:
Open fileToOpen For Binary As #1 '注意要用二进制方式读入!
lines = Split(Input(LOF(1), #1), vbCr) '把 vbCr 改为 vbCrLf 即可读入正常的DOS格式文本
Close #1
而且这种方法比你的更简洁!
再补充一点:个别情况下有可能出现用“换行符”(即0A)来给文本分行的,只要把上面的 vbCr 改为 vbLf 即可
补充一点:如果不用Line Input的方式读入文本到数组,而是改用Split函数,那么就可自动读入非DOS格式的文本:
Open fileToOpen For Binary As #1 '注意要用二进制方式读入!
lines = Split(Input(LOF(1), #1), vbCr) '把 vbCr 改为 vbCrLf 即可读入正常的DOS格式文本
Close #1
而且这种方法比你的更简洁!
再补充一点:个别情况下有可能出现用“换行符”(即0A)来给文本分行的,只要把上面的 vbCr 改为 vbLf 即可
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询