Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Lettura File Binari A Blocchi [Google failed]

Allora sono ore che cerco nei vecchi post di google , ma mai come in questo
caso mi e' risultato cosi difficile da capire , possibile che il trio :
"google & msdn & LetturaFileBinari" sia cosi povero ?
DOMANDA :
Come leggere un file in modalita' binaria a blocchi di X byte fino alla fine
del file ?
Spero mi diate una risposta precisa , in quanto msdn e' scarsissimo , google
tra flame e "rileggiti i vecchi post" non si trova nulla , sto veramente
iniziando a sclerare !
oramai il codice che so riuscito a scrivere dopo 1000 cambiamenti e' questo
:
'NB: num_file , nomefile so dichiarate , il txt e' solo per prova ...
Open nomefile For Binary Access Read As #num_file
  Seek #num_file, 1
 Do Until EOF(1)
    Get #num_file, (i * 64) + 1, Riga        'leggi
    i = i + 1
    txtBuffer.Text = txtBuffer.Text & vbCrLf & Riga
 Loop
Close #num_file
-- 
<Gigio2K>
Sito Comune
Nokia -> I.T.H.N. -> 
http://www.ithn.it/
VB -> I.C.L.VB -> 
http://www.it-lang-vb.net/

del file ?
E' sufficiente saper contare i byte che vengono letti.
Con 
	LOF(num_file) 
conosci quanti byte compongono il file, mentre con 
	Get num_file, posizione, buffer
dici a vb quale file deve leggere, da quale byte ed in quale buffer
deve copiare il blocco che ha letto.
-- 
ciao, hal

 deve copiare il blocco che ha letto.
adesso in chat mi hanno suggerito anche di usare len alla fine della open
per valorizzare il blocco
quindi dovrei avere tutto .. proviamo ...


Una tazza di buon The ha risolto tutto, scusate lo sbrocco  in NG ma ero
davvero nervoso e ho capito che e' meglio staccarsi dal pc e calmarsi che
continuare a scrivere col nervoso addosso ^_^;
Happy New Year ( -18h )


EOF non si deve usare con i file aperi in modo binario perchč puoi essere
gią
andato olte la fine del file quando questo diventa vero.
Prova con questo codice:
    Dim intFile As Integer
    Dim strFile As String
    Dim strBuffer As String
    Dim lngDimensioneBuffer As Long
    Const cstDimensioneBuffer = 1024 ' Leggo il file a blocchi di 1Kb
    strFile = "C:\log.txt"
    intFile = FreeFile
    Open strFile For Binary Access Read As intFile
    ' Leggo tutto il file
    Do While LOF(intFile) > Loc(intFile)
        ' Controllo la dimensione del buffer con quanto mi resta da leggere
dal file
        If LOF(intFile) - Loc(intFile) < cstDimensioneBuffer Then
            ' Siamo alla fine della lettura, devo leggere solo i bytes
rimanenti
            lngDimensioneBuffer = LOF(intFile) - Loc(intFile)
        Else
            ' Leggo altri cstDimensioneBuffer bytes dal file
            lngDimensioneBuffer = cstDimensioneBuffer
        End If
        strBuffer = Input(lngDimensioneBuffer, intFile)
        '....
        ' strBuffer contiene o cstDimensioneBuffer bytes o la parte
rimanente finale del file
        '....
    Loop
    Close intFile

     Close intFile
Ciao

> Solo qualche appunto prestazionale...
Scusate ragazzi , mi ero autorisposto ma non so come me lo vedo in un altro
3ad :-/
Cmq era solo questione di nervi ! ^_^
Mettevo nel buffer i byte e li trattavo come stringa oppure il seek rimaneva
fermo ...
alla fine visto che il mio scopo era mandare via winsock pezzettini di file
a internet explorer formati STRINGA ho aperto il file in binario, caricato
tutto il file in un buffer e poi con Mid$ mandavo le stringhe di 1024 char ,
diciamo che fino a jpg di 32K riesco a gestire , poi naturalmente il buffer
non lo regge !
cmq non so perche' ma explorer non mi accetta i dati troncati , non ho
trovato nulla nelle varie RTF dell'HTTP ... bha ... non ci pensiamo per oggi
... FACCIAMO FESTA ^_^
