回 帖 发 新 帖 刷新版面

主题:关于文本文件读入并显示的问题

下面是一个读入并显示文本文件最后一行的源程序,现在有两个问题,
1:这段程序如何修改成读入并显示文本文件倒数第二行?   
2:为什么它在文本框中显示的是乱码?

窗体中一个文本框,一个command按钮,

Private Sub Command1_Click()
Dim MaxSize     As Long
  Dim NextChar     As Long
  Dim MyStr     As String
  Dim MyChar     As String
  Open "c:\a.txt" For Input As #1                 '打开输入文件。
  MaxSize = LOF(1)           '取得文件的总字符数。
  '   用循环读入,从最后开始往前读。
  For NextChar = MaxSize To 1 Step -1
          Seek #1, NextChar           '   设置读写位置。
          MyChar = Input(1, #1)           '读入一字符。
          If MyChar = vbLf Then
                Exit For
          Else
                MyStr = MyChar & MyStr        '当前字符加在字符串前面
          End If
  Next NextChar
  Close #1         '关闭文件
  Text1.Text = MyStr
End Sub

回复列表 (共4个回复)

沙发

用LOF函数取得的是文件的字节数,如果你这个文本文件是纯英文的,这段代码就没问题,如果有汉字,就有问题,出乱码

板凳

代码可以这样写:

Private Sub Command1_Click()
Dim fs, fi, i As Long, st As String, MyChar() As String
Set fs = CreateObject("Scripting.FileSystemObject")
Set fi = fs.opentextFile("c:\a.txt", 1, True)
st = fi.ReadAll
fi.Close
Set fs = Nothing
Do While Right$(st, 2) = Chr(13) & Chr(10): st = Left$(st, Len(st) - 2): Loop '去掉文本最后面的回车换行符
MyChar = Split(st, vbCrLf, -1) '把文本的每一行装进一个数组元素
i = UBound(MyChar) '获取数组下标
Text1 = MyChar(i - 1) '显示倒数第二行的文本
End Sub

3 楼

一江秋水同志回答的很对!不要随意使用字节!尤其是这种简单的问题。切莫搞复杂了!

4 楼

[quote]一江秋水同志回答的很对!不要随意使用字节!尤其是这种简单的问题。切莫搞复杂了![/quote]
表用“同志”好吗?它和“小姐”本正经,被赋予了不光彩的含义后有人不愿意被这样称呼了。何况你和一江秋水注册性别相同。[em20]

我来回复

您尚未登录,请登录后再回复。点此登录或注册