2010-03-16 42 views

Respuesta

8

Aquí hay una forma, aunque está limitado a archivos de alrededor de 2 GB de tamaño.

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 
+1

¿Por qué el bucle? Simplemente 'Obtenga fileNum,, bytes' y agréguelo 100x – wqw

+0

En' Get fileNum,, data' obtengo un 'Error en tiempo de ejecución 458, la variable usa un tipo de automatización no soportado en Visual Basic'. ¿Tienes idea de lo que está pasando? ¿Me estoy perdiendo una referencia de biblioteca? – user2173353

+0

OK. ¡Lo tengo! Cámbielo a esto: 'ReDim bytes (1 a lenF) Como Byte'. Aparentemente estaba usando Variant y no me gustó para nada ... – user2173353

5

Puede comparar estos dos

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 

Yo prefiero la segunda, pero tiene este efecto secundario desagradable. Si sFile no existe, el modo For Binary crea un archivo vacío sin importar que se use Access Read.

Cuestiones relacionadas