2010-03-16 14 views

Antwort

8

Hier ist ein Weg, obwohl Sie auf Dateien um 2 GB beschränkt sind.

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

Warum Schleife? Just 'Get fileNum,, Bytes' und beschleunigen es 100x – wqw

+0

Auf dem' Get fileNum,, Daten' Ich bekomme einen 'Laufzeitfehler 458, Variable verwendet einen Automatisierungstyp nicht in Visual Basic unterstützt'. Irgendeine Idee was ist los? Fehle ich eine Bibliotheksreferenz? – user2173353

+0

OK. Ich habs! Ändern Sie es in diese: 'ReDim Bytes (1 bis LenF) als Byte. Anscheinend habe ich Variant benutzt und es hat mir überhaupt nicht gefallen ... – user2173353

5

Sie können diese beiden

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 

ich die zweite bevorzugen vergleichen, aber es hat diese unangenehme Nebenwirkung. Wenn sFile nicht existiert For Binary Modus erstellt eine leere Datei, egal Access Read wird verwendet.