Qual è il modo più veloce (utilizzando VB6) per leggere un intero file binario in una matrice?Leggere un file binario in una matrice
7
A
risposta
8
Ecco un modo, anche se si sono limitati a file con dimensioni di circa 2 GB.
Dim fileNum As Integer
Dim bytes() As Byte
fileNum = FreeFile
Open "C:\test.bin" For Binary As fileNum
ReDim bytes(LOF(fileNum) - 1)
Get fileNum, , bytes
Close fileNum
5
È possibile confrontare questi due
Private Function ReadFile1(sFile As String) As Byte()
Dim nFile As Integer
nFile = FreeFile
Open sFile For Input Access Read As #nFile
If LOF(nFile) > 0 Then
ReadFile1 = InputB(LOF(nFile), nFile)
End If
Close #nFile
End Function
Private Function ReadFile2(sFile As String) As Byte()
Dim nFile As Integer
nFile = FreeFile
Open sFile For Binary Access Read As #nFile
If LOF(nFile) > 0 Then
ReDim ReadFile2(0 To LOF(nFile) - 1)
Get nFile, , ReadFile2
End If
Close #nFile
End Function
Io preferisco la seconda, ma ha questo effetto collaterale sgradevole. Se sFile
non esiste, la modalità For Binary
crea un file vuoto, indipendentemente dal fatto che sia utilizzato lo standard Access Read
.
Perché loop? Appena 'Ottieni fileNum,, bytes' e velocizzalo 100x – wqw
Su 'Ottieni fileNum,, i dati' ottengo un errore di run-time 458, la variabile utilizza un tipo di automazione non supportato in Visual Basic'. Qualche idea su cosa sta succedendo? Mi manca un riferimento bibliografico? – user2173353
OK. Fatto! Cambiarlo in questo: 'ReDim bytes (1 To lenF) As Byte'. A quanto pare stavo usando Variant e non mi è piaciuto affatto ... – user2173353