Originally posted by slore at 2010-2-9 12:23 AM:
GetColumn要2重循环,感觉不如直接mid好吧。
一般来说的确如此,自己编码的话使用Mid会更方便。
由于二者的工作机制不同,
Column相当于高级语言中的指针的性质,而且系统会自动在换行之后将其置于初时状态的值 1,
Mid必需要读取完整的一行文字之后才能截取其中某个位置的字符,如果某行长度太长,用ReadLine则会影响效率,而如果用 Read(length) 则无法判断是否换行,同样要二重循环,而且比用Column更麻烦。
为了说明这一点,写了下面一段代码,并刻意制造了一个很长的文本(见附件 ~$tmp01$.txt),能显著的反应出结果
Set fso = CreateObject("Scripting.FileSystemObject")
startTime = Timer
s = ""
Set f = fso.OpenTextFile("~$tmp01$.txt")
Do Until f.AtEndOfStream
char1 = ""
Do Until f.AtEndOfLine
If f.Column = 421 Then
char1 = f.Read(1)
Exit Do
End If
f.Skip 1
Loop
s = s & char1
f.SkipLine
Loop
f.Close
MsgBox "利用 Column 属性得出结果 " & s & " 耗时 " & Timer - StartTime & " 秒。"
startTime = Timer
s = ""
Set f = fso.OpenTextFile("~$tmp01$.txt")
Do Until f.AtEndOfStream
t = f.ReadLine()
s = s & Mid(t, 421, 1)
Loop
f.Close
MsgBox "利用 Mid 函数得出结果 " & s & ", 耗时 " & Timer - StartTime & " 秒。"