回 帖 发 新 帖 刷新版面

主题:这个问题 有点难,各位大侠 麻烦帮忙看一下

function X()
。。。
Set TxtStr = fso.OpenTextFile(Filepath, ForReading, False, TristateFalse)
      arrStr = TxtStr.ReadAll
     File = Mid(arrStr,1, 100) 
。。。

   filepath是很大的txt文件的路径,
   我想问下,如何分步读取这个文件,每次读100,
   然后再调用这个 function ,从上次读取完结的位置继续读取 ,如此循环,直至读取完毕程序跳出。
  小弟不甚感激!

回复列表 (共2个回复)

沙发

建议采用Open fName For Input As #1的方式来读取文件。
思路:
1.设置一个计数器,读入100行就停止。
2.把停止位置写入注册表,供下次读文件时使用。
代码如下(你自己改为函数吧):

Option Explicit

Dim Lx1 As Integer

Private Sub Command1_Click()
On Error GoTo 100
Dim Z As String, ST As String, k As Integer
GetSetting "超级记事本", "分步读取", "位置", Lx1
If Lx1 = 0 Then Lx1 = 1
Open filepath For Input As #1
Seek #1, Lx1 '设置读文件的起始位置
Do Until EOF(1) Or k = 100
  Line Input #1, Z
  ST = ST & Z & vbCrLf
  k = k + 1
Loop
Lx1 = Seek(1) + 1 '获取下一次起始读位置
If Lx1 >= LOF(1) - 2 Then Lx1 = 1
SaveSetting "超级记事本", "分步读取", "位置", Lx1 '将 Lx1 的新值写入注册表
Text1.Text = Text1.Text & ST
100
Close #1
End Sub

板凳

更正一下:
Dim Lx1 As Long

我来回复

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