首先感谢你寄来了相关的程序片断。我经常收到一些关于程序设计的问题，可连一行代码都没提供，只有出错信息，真不知如何下手。正是借助你的程序，我一下子就看出了问题，否则我的解答可能是一堆废话了。很明显问题出在Input语句，但我们得从VB处理字符串的方式讲起。早期的VB是采用单字节处理方式(通常也称为ANSI方式)，也就说一个英文字母用一个字节表示，一个汉字算两个字节，当然这样就可能出现半个汉字的问题。从VB 4.0起，VB采用了一种新的处理方式，即内部采用Unicode方式，即不论英文字母还是汉字，一律用两个字节表示，但Unicode还不够普及，所以VB只是在其内部完全使用Unicode，而在外部仍转换为人们习惯的ANSI方式，但在字符串处理上与先前的版本有所不同。例如：在中文Windows或英文Windows外挂RichWin 97中，Len("电子&电脑")=5(这里的&号为半角字符)，而在以前的版本或纯英文Windows中Len("电子&电脑")=9。除了Len、Left、Right等字符串函数受此影响外，Input函数也受此影响。Input函数的第一个参数是要读入的字符数，它采用的是和Len一样的计数方式，即一个英文字母算一个字符，而一个汉字(两个字节)算一个字符。这看起来是个好主意，你不会读入半个汉字，但实际上糟透了，因为VB的LOF函数和FileLen函数都返回的是字节数，VB中没有一个能区分汉字和英文字母的LOF函数或FileLen函数！如果你测试文件d:\test1.txt全部是英文，那么你的这段程序可以正确运行，尽管你没有寄来测试文件，但我可以和你打赌，这个文件中有中文。如果你的文件中有100个汉字，那么LOF函数和FileLen函数返回文件长度200个字符，执行Input(200, filenum1)，VB读到第100个汉字时就把文件读完了，所以提示错误："输出超出文件尾"。可能会有人想，把LOF函数和FileLen函数返回文件长度除以2不就行了。是的，如果你的文件中只包括全角字符，那么这么改就对了，但我们平时接触的很多文件都是全角半角混杂的。VB提供了InputB函数，它可以按字节数读入文件，但实际上这个函数有错误，如果你用它读入的文件，那么你得到的可能是象"??????"这样的字符串。我想很多用户都见过这种奇怪的情况。Line Input语句就没有这个问题，因为它不计数，只看文件中是否有回车和换行，但Line Input语句比Input语句慢得多。怎么解决这个问题呢，我有一个办法不见得好，但可以应急。把Open打开文件的方式由Input改为Binary方式，即 
     Open "d:\test1.txt" For Binary As filenum1 
    然后，使用Get语句代替Input语句： 
     TextLine = Space(LOF(filenum1)) 
     Get filenum1, , TextLine 
    这个语句速度同Input函数相当，而没有前述的问题。 
<END>
在vb6中可以用strconv(input(filename),vbUnicode),这可能更好! 
<END>
    