热情软件屋

 

如何实现一个字符一个字符的读


编号:QA004518
建立日期: 2002年1月20日 最后修改日期:2002年1月20日
所属类别:

xy_323:
    我在用vb编程,读文本文件是遇到了问题:程序如下
    Private Sub Command1_Click()
    Dim lnputData As String * 1
    Dim stri As String
    Open "e:\test\aaa.txt" For Input As #1
    stri = ""
    Do While Not EOF(1)
    
    Input #1, inputdata
    stri = stri + Str(inputdata)
    
    
    Loop
    
    Close #1
    Text1.Text = stri
    
    End Sub
    文本文件aaa.txt的内容是:“123AA456AA789AA”
    程序本意是要实现一个字符一个字符的读,但执行的结果却是:一次读入了123就结束了。为什么一次读入了三个字符?并且遇到了字符“A”就当成文件结束了。为什么?文本文件的结束符是什么?请教各位了。谢谢!

回答:

    你对Input的理解有问题。Input是一次读若干个字符,直到遇到分界符为止。分界符包括换行、文件尾、逗号等。对于你的情况,Input在遇到文件尾后读入整个字符串,由于你程序中有一个错误:Dim lnputData As String * 1中使用的是l,而不是i,所以inputData这个变量没有定义类型,所以VB自动将读入的字符串转换为数字,所以inputData得到的是123。这就是为什么你的程序得到这样的结果。你可以将文件内容改为“123AA,456AA789AA”,这样你就会发现,得到的结果是“ 123 456”,因为Input把逗号作为一个分界符。如果你的程序定义部分没有那个错误,则你的程序运行后只读入文件的第一个字符。如果要一个字符一个字符地读,最好是使用Binary方式打开文件,使用Get #去读。不过一个字符一个字符操作效率很低,最好是把文件全部读入,在内存中使用字符串处理函数Mid一个一个地处理,这样的效果差很多。
    
    相关问题:
    QA000051 "VB 5提示错误:"输入超出文件尾""

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio