2010-03-16 32 views

cevap

8

Burada, 2 GB'lık boyuttaki dosyalarla sınırlı olmanıza rağmen, bir yolu var.

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

Neden döngü? Sadece 'DosyaNum, bayt 'dosyasını alın ve 100x hızını artırın. – wqw

+0

' Get fileNum, veri '' Çalışma Zamanı Hatası 458 aldım, Değişken, Visual Basic'te desteklenmeyen bir Otomasyon Tipini kullanır. Ne olduğuna dair bir fikrin var mı? Bir kütüphane referansını kaçırıyor muyum? – user2173353

+0

Tamam. Anladım! Bunu şununla değiştirin: 'Bayt olarak ReDim baytları (1 To lenF). Görünüşe göre Variant kullanıyordum ve hiç hoşlanmadı ... – user2173353

5

Benim ikincisi tercih bu iki

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 

karşılaştırabilirsiniz ama bu kötü yan etkisi yoktur., For Binary modunda yoksa Access Read kullanıldığında boş bir dosya oluşturur.