|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Oct 2002
Messaggi: 5035
|
[Visual Basic] Istruzione "Dir"
Ciao a tutti, sto facendo un programma che legga mediante l'istruzione "Dir" tutti files Excel in una cartella e per alcuni di essi faccia una copia di backup. A volte si riscontra l'errore 5 ("Chiamata di routine o argomento non valido"). Ancora non ne capisco il motivo, ma il problema è un altro. Infatti ho notato che questo errore non blocca l'elaborazione, quindi l'ho gestito facendo un "Resume Next" in caso si manifesti. La cosa strana è quella che accade dopo, infatti a volte continua leggendo sempre lo stesso file, causando così un loop infinito.
Qualcuno può aiutarmi? Potrebbe aiutarmi anche capire con quale ordine i fogli sono letti (data, nome, dimensione, ecc) Grazie
__________________
Id PSN: StefanoCsl (PS4): Battlefield 4 | Killzone Shadow Fall | The Division (clan IHSV)
|
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2776
|
Posta il codice che da problemi così gli diamo un'occhiata
|
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Oct 2002
Messaggi: 5035
|
Quote:
Ti riassumo le istruzioni quì sotto: nomeFile = Dir("*.xls") do while nomeFile <> "" ... nomeFile = Dir() loop dopo una lunga serie di file in cui non ci sono problemi inizia a leggere sempre lo stesso. Da cosa può dipendere?
__________________
Id PSN: StefanoCsl (PS4): Battlefield 4 | Killzone Shadow Fall | The Division (clan IHSV)
|
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2002
Messaggi: 5035
|
Sono riuscito ad isolare l'errore. L'istruzione che genera l'errore è la "Dir" all'interno del ciclo, l'errore generato è il 5 (Chiamata di routine o argomento non valido). Credo anche di aver capito perché quando succede il programma va in loop, infatti andando in errore entra nella routine di gestione degli errori dove, per esigenze di progetto, ho dovuto mettere un "resume next". Ovviamente l'applicazione esegue l'istruzione successiva tenendo in canna lo stesso nome file ed è per questo che inizia a leggere sempre lo stesso file.
Qualcuno di voi ha già avuto questo tipo di errore con l'istruzione "Dir"? Ho fatto anche una ricerca nella cartella ed il file c'è, quindi non è quello il problema, da cosa può dipendere? Grazie a tutti
__________________
Id PSN: StefanoCsl (PS4): Battlefield 4 | Killzone Shadow Fall | The Division (clan IHSV)
|
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Aug 2003
Messaggi: 72
|
hai provato a usare
Codice:
io.Directory.GetFiles()
__________________
Visual Basic e dintorni Blog sullo sviluppo web |
![]() |
![]() |
![]() |
#7 |
Member
Iscritto dal: Aug 2003
Messaggi: 72
|
scusami colpa mia :P
Come titolo avevo letto Visual Basic e per me è stato naturale pensare a .NET
__________________
Visual Basic e dintorni Blog sullo sviluppo web |
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Oct 2002
Messaggi: 5035
|
Quote:
Riguardo l'istruzione Dir sai dirmi qualcosa? Considera che l'applicazione gira dalle ore 19 e che in serata viene fatto un backup del contenuto dell'HD, io temo che ci possa essere un conflitto sui files, che ne pensi? Su MSDN, non ho trovato nulla dell'errore 5 che possa riguardare l'istruzione Dir.
__________________
Id PSN: StefanoCsl (PS4): Battlefield 4 | Killzone Shadow Fall | The Division (clan IHSV)
|
|
![]() |
![]() |
![]() |
#9 |
Member
Iscritto dal: Aug 2003
Messaggi: 72
|
No, mi dispiace non saprei come aiutarti, probabilmente più che un problema di programmazione, potrebbe essere un problema di logica dell'applicazione.
Mi spiego meglio, magari è più semplice trovare una soluzione trovando una via alternativa per eseguire quel loop
__________________
Visual Basic e dintorni Blog sullo sviluppo web |
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Oct 2002
Messaggi: 5035
|
Quote:
__________________
Id PSN: StefanoCsl (PS4): Battlefield 4 | Killzone Shadow Fall | The Division (clan IHSV)
|
|
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2776
|
Il codice mi sembra giusto, mi sembra strano il comportamento che dici comunque se non si riesce a risolvere puoi sempre salvarti in una variabile il nome del file precedente e poi all'inizio del ciclo controlli se il file precedente è uguale a quello che stai leggendo e in tal caso esci dal do.
|
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Oct 2002
Messaggi: 5035
|
Quote:
__________________
Id PSN: StefanoCsl (PS4): Battlefield 4 | Killzone Shadow Fall | The Division (clan IHSV)
|
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:43.