0

我想将二进制文件的前 n 个字节(例如 100000)中所有字母和数字的 ascii 代码加载到数组中。我写了这段代码:

Option Explicit

Dim i, lCharCount, lFileByte, lFileArray(99999)
Dim oFSO, oStream, sInFileName

'Validate input command line
If WScript.Arguments.Count < 1 Then
    MsgBox "No input file has been specified!", vbExclamation, "My Script"
    WScript.Quit
End If

sInFileName = WScript.Arguments(0)
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oStream = oFSO.OpenTextFile(sInFileName, 1)
Do While Not oStream.AtEndOfStream
    lFileByte = Asc(oStream.Read(1))
    If (lFileByte > 47 And lFileByte < 58) Or (lFileByte > 64 And lFileByte < 91) Or (lFileByte > 96 And lFileByte < 123) Then
        lFileArray(lCharCount) = lFileByte
        lCharCount = lCharCount + 1
        If lCharCount = 100000 Then Exit Do
    End If
Loop
oStream.Close: Set oStream = Nothing

但我需要它跑得更快。我宁愿不使用 ADODB,但是如果无法使用 FSO 加快速度,我愿意接受所有建议。有任何想法吗?

4

2 回答 2

1

尝试这样的事情:

cnt = 100000

data = oFSO.OpenTextFile(sInFileName).Read(cnt)
ReDim lFileArray(Len(data)-1)

For i = 1 To Len(data)
  lFileArray(i-1) = Asc(Mid(data, i, 1))
Next
于 2013-09-24T10:31:50.053 回答
0

尝试在您的文件上调用 ReadAll,而不是逐个字符地调用。这将读取整个文件并将其作为字符串返回。然后使用相同的循环,但这次在返回的字符串上,使用字符串扫描方法。

于 2013-09-23T20:00:42.570 回答