Newsgroup: it.comp.lang.visual-basic
Titolo: Leggere File

Salve raga, ho un problema:
Ho aperto un file in modo binario e il mio scopo č quello di leggerlo
completamente fino all'ultimo byte e NON OLTRE.
Ho dichiarato una variabile :
dim Dati(8191) as Byte
ho provato a leggere il file che č di 3908 kb, quindi ho provato a scrivere
lo stesso file (quindi l'ho copiato) ma questo risulta 3912kb (che č un
multiplo di 8kb ), quindi con 4 kb in piů (rispetto alla dimensione del file
origine 3908kb).
Come faccio a leggere solo ed esclusivamente la lunghezza del file qualunque
sia la sua dimensione?

 qualunque sia la sua dimensione?
Curiosità: conosci la differenza fra dimensione di un file e occupazione su
disco del file?
Alberto
--
E non so se avrò gli amici a farmi il coro,
o se avrò soltanto volti sconosciuti,
canterò le mie canzoni a tutti loro
e alla fine della strada
potrò dire che i miei giorni li ho vissuti...


Certo che la conosco, e tu?
Comunque non mi sei stato d'aiuto.
Hai capito il problema?

 Hai capito il problema?
Certo. E te l'ho anche detto.
Almeno, la stessa cosa l'ho già notata e la soluzione è quella che ti ho
detto fra le righe.
Se poi nel tuo codice (che non hai riportato), ci sono altri problemi tipo
che leggi e scrivi a blocchi (per cui l'ultimo blocco incompleto viene
scritto tutto lo stesso), non posso indovinarlo. Ma quello lo vedresti
subito con un semplice conteggio dei byte scritti, quindi credo che tu abbia
già escluso questa problematica.
Ma credo che il problema principale stia nella storia dei settori.
Ciao



Ma l'ho scritto, io praticamente leggo blocchi di 8192 byte, ma non so come
fare per leggere tutto il file cioè se un file è 20kb, legge 3 blocchi di
8kb, e quindi quando va a scrivere il file è 24kb.
Non so come fare per leggere solo 20kb (ad esempio).
Forse prima mi sono spiegato male :)

 Non so come fare per leggere solo 20kb (ad esempio).
Mio figlio che ha 9 anni suggerisce di ridimensionare l'ultimo blocco:
sara' di 4k invece che di 8.
--
ciao, hal
--------------------------------
Inviato via 
http://usenet.libero.it


;) gli puoi dire anche a tuo figlio se il file č di 22kb (quindi non č un
multiplo di 4) come devo fare?

 multiplo di 4) come devo fare?
Ridimensionarlo a 6K.


Il problema è che non so ridimensionare l'ultimo blocco :(
Ho provato ma mi da errore.

 Ho provato ma mi da errore.
sai il significato di modulo e resto?


Evidentemente no. Questo mi aiuta a risolvere il mio problema?
Se si mi dici come si applica?

 dim Dati(8191) as Byte
La lunghezza del file la ottieni con lof(FileNum)
Dim Dati() as byte    ' NON mettere la dimensione
Dim ByteCou as long   ' Conta i bytes che hai già letto
Redim Dati(8191)
Se nel file ci sono ancora 8192 bytes leggi, altrimenti
Redim Dati(BytesRestanti)
e leggi i bytes restanti
Ciao.
pinco_pallo
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


A parte gli scherzi:
tu vuoi gestire un passaggio di byte fra due file, senza sapere fare una
divisione?
Spero ovviamente sia una battuta ironica.
Comunque, ad ogni buon conto: quando leggi dal file di origine, puoi
conoscerne la dimensione complessiva, o leggendola prima di cominciare
(LOF), o man mano che leggi.
Quindi, conoscendo la dimensione di un blocco, ti sarà facile stabilire che
il tuo file è, ad esempio, di 3 blocchi e restano 34 bytes. Giusto, fin qui?
Bene, allora il quarto blocco dovrà essere ridimensionato a 34 bytes.
Giusto?
Quindi, ecc. ecc..



Grazie a tutti per l'aiuto :)
Sono riuscito a risolvere il problema.