Praticamente il programma preleva uno dopo l'altro il nome di ogni
file da un FileListBox, una volta definito bene il percorso completo
apre il file (Open TheFile For Input As #2), lo legge (o ne legge una
parte se questo è maggiore di 32K) assegnandolo ad una stringa
(ParteProcessata = Input(LOF(2), #2)), quindi scrive il tutto in un
file precedentemente aperto (Print #1, ParteProcessata)
Per semplicità, sopra, ho accennato il caso file < 32K, ma c'è anche
la parte che regola i file > 32K dividondoli in blocchi più piccoli e
leggendoli così fino alla fine.
Ho provato a lanciarlo nella mia cartella c:\Windows. Il programma fa
il suo dovere leggendo anche file molto maggiori di 100K e scrivendoli
correttamente nel file finale, però, ogni tanto si inchioda, magari su
un file ridicolo da pochi K e mi da questo
> "Errore di run-time '62': Input oltre la fine del file"
e nel Debug mi segna sbagliata la riga che ho evidenziato nel codice
chev riporto sotto. Io però non capisco perché e sopratutto non
capisco perché solo alcuni file fanno questa storia. Se il codice
fosse sbagliato dovrebbero darmi questo errore tutti!?
Per semplicità mostro la procedura riservata ai file < 32K dove
FileFuturo e TheFile sono rispettivamente il file unico che verrà
generato alla fine e il file momentaneamente processato.
Open FileFuturo For Append As #1
Open TheFile For Input As #2
Dim ParteProcessata As String
> ParteProcessata = Input(LOF(2), #2)
Print #1, ParteProcessata
Close #2
Close #1
Forse il mio codice non è il migliore o il più corretto da usare in
questo caso, ma non sono molto bravo; i miei programmi vanno avanti a
cicli For, If Then Else e Select Case.
Se quacuno ha la pazienza di rispondermi mi fa un gran piacere.
Se ho sbagliato qualcosa nel modo di postare il msg chiedo scusa fin
d'ora.
Ringrazio anticipatamente. Ossequi!
------------------------
Sgré
E-mail: agra...@racine.ra.it
Per capire bene il problema bisognerebbe vedere il codice!
Provo comunque ad azzardare un'ipotesi:
Forse il problema si verificha quando suddivi i file più grossi di 32K in
blocchi più piccoli.
Il problema dovrebbe essere proprio nel modo in cui suddividi il file in
blocchi di input.
Probabilmente l'errore si verifica quando, per esempio, alla fine del file
(quello suddiviso in blocchi) rimane da leggere un byte e tu tenti di
leggerne due.
Infatti se per esempio leggi i file a due byte per volta e la lunghezza in
byte del file è dispari probabilmente otterrai l'errore.
Se ci ho azzeccato, dovresti risolvere il problema suddividendo il file più
opportunamente in blocchi di input in base alla lunghezza del file stesso.
Ripeto che la mia soluzione si basa soltanto su un'ipotesi, quindi potrei
anche sbagliarmi.
Spero di essermi spiegato bene e di esserti stato d'aiuto.
__ __
<o> <o>
[]
\____/ ......(Fammi sapere!)
Pasquale Minerva
mine...@libero.it
Azzardo una ipotesi: quei file non sono di puro testo, e alcuni contengono
dei caratteri EOF (ASCII 26), che bloccano la Input; prova ad aprire i file
For Binary, anzichè for Input. Credo possa capitare con dei file HTM che
contengono codice Java, ad esempio. Non è detto che un file sia per forza
di testo solo perché ha l'estensione TXT. Magari guardali con un editor esadecimale.
> Forse il mio codice non è il migliore o il più corretto da usare in
> questo caso, ma non sono molto bravo; i miei programmi vanno avanti a
> cicli For, If Then Else e Select Case.
Sei in VB, che altro vuoi usare ? ;-)
>Se ho sbagliato qualcosa nel modo di postare il msg chiedo scusa fin d'ora.
Se sei nuovo del NG, ti consiglio una visita al Sito Comune (URL nella firma),
troverai, oltre ad una marea di codice e consigli vari, il Manifesto, che ti potrà
togliere ogni curiosità in proposito.
Bye, G.
--
---------------------------------------------
Le risposte alle tue domande le trovi
sul Sito Comune di questo NewsGroup:
http://www.murialdo.it/it_lang_vb
... e nell'help in linea !
---------------------------------------------
Real E-address: gaet...@hotmail.com