Newsgroup: it.comp.appl.access
Titolo: Errore curioso

Almeno per me:-)
Devo eliminare una directory, ovviamente per farlo devo prima controllare
che ci siano file dentro ed eventualmente cancellarli. Dopo di che, crearla
nuovamente e scriverci un file dentro (un mdb creato da codice).
Quindi ho fatto così:
pathappo = "c:\pippo"
If Dir(pathappo, vbDirectory) <> "" Then
    If Dir(pathappo & "\*.*") <> "" Then
        Kill (pathappo & "\*.*")
    End If
    RmDir (pathappo)
End If
MkDir (pathappo)
ecc. ecc.
Putroppo però mi da errore di accesso al file alla riga che cancella la
directory, ma se stoppo il codice e lo faccio ripartire, allora va tutto
bene.
Quindi sono stato costretto a modificare la routine in questo modo:
If Dir(pathappo & "\*.*") <> "" Then
        Kill (pathappo & "\*.*")
End If
If Dir(pathappo, vbDirectory) <> "" Then
    RmDir (pathappo)
End If
E l'errore non si presenta.
Non che mi cambi la vita, ma non capisco bene il perchè dell'errore, ho
anche provato a risalire di livello con chdir pensando che rimanesse
posizionato dentro la directory e non potesse eliminarla dal suo interno, ma
non è così.
Saluti.
Luciano


Ma non č un po' tortuoso questo procedimento ?
Io sono abituato ad usare il seguente metodo:
on error goto giu1
mkdir "MiaCartella"
giu1:
on error goto giu2
kill "MiaCartella\*.*"
giu2:
on error goto 0
L'mkdir crea la cartella se non esiste, mentre il kill cancella gli 
eventuali files presenti: alla fine, mi ritrovo con la cartella vuota, come 
desideravo.
Ciao
Antonio


scusa Antonio, ma usare le label degli errori è deprecato dal qbasic
in poi ......
ciao sam--

 ha scritto nel messaggio 
news:136ni4l7c2pfb0vd8...@4ax.com...

Ora non ho la possibilità di provare, ma forse è possibile usare "on error 
goto next" così elimini la label che ti dà tanto fastidio. A proposito di 
label, credo che il principio di evitare di usarle possa anche essere giusto 
per rendere un programma più leggibile, ma se l'omissione della label fa 
diventare la routine meno efficiente (in tutti i termini: leggibilità, 
velocità, dimensione, etc.), beh, allora io continuerò a fare uso di goto e 
label.
Ciao
Antonio
PS.: Una volta se cercavi di capire cosa doveva fare un programma scritto 
non da te ma da un altro programmatore era un lavoro improbo proprio per 
colpa dell'uso eccessivo e spesso inutile dei salti avanti e indietro che 
faceva il programma. A volte succedeva che anche se lo avevi scritto tu 
stesso, dopo un po' di tempo facevi fatica a capire l'algoritmo sottostante 
a quel groviglio di istruzioni e routines messe quasi alla rinfusa... così i 
nostri saggi predecessori hanno consigliato di utilizzare if... then... else 
e togliere le label incasinatrici. Ma non credo che sia una regola da 
prendere proprio alla lettera.

"Luciano (DOC)" <lucia...@luciano.doc> ha scritto nel messaggio 
news:492adf8e$0$18156$4faf...@reader3.news.tin.it...

Ciao Luciano.
In effetti nelle specifiche della RmDir viene indicato che presenta un 
errore se nella cartella da eliminare non è vuota.
Secondo me è un problema di "tempi di comunicazione" del S.O. dell'avvenuta 
cancellazione del file dalla Kill, e quindi la disponibilità per RmDir di 
cancellare la cartella...
Ciao.
-- 
Sergio MAZZA 

 nuovamente e scriverci un file dentro (un mdb creato da codice).
[CUT]
Scusa la curiosità, ma perchè eliminare la directory per poi ricrearla con
lo stesso nome? Non ti basta svuotarla?
Ciao.
-Marco-
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Io sono abituato ad usare il seguente metodo:
Punti di vista, a me pare tortuoso il tuo di metodo:-)
Innanzitutto evito le label ed i goto a meno di avere una pistola alla
tempia, inoltre non amo molto lavorare sugli errori, preferisco
intercettarli preventivamente se possibile. Ed in questo caso mi sembrava la
cosa piů logica.
Saluti.
Luciano

 per RmDir di cancellare la cartella...
Ho pensato anche quello, ma eseguendo il codice passo passo ed aspettando
qualche secondo prima di passare alla riga che cancella la directory il
problema persiste.
Saluti.
Luciano

 lo stesso nome? Non ti basta svuotarla?
E pure te ci'hai ragione...:-)
Resta il perchè dell'errore che ricevo.
Saluti.
Luciano


wrote:

era solo un appunto scherzoso.
ciao sam--
PS:
il tuo suggerimento "On error Resume Next" per me è come cadere dalla
padella alla brace....

 Saluti.
Sospetto che c'entri qualcosa il fatto che chiamando la funzione dir,
questa restituisce i nomi file nella directory, uno per ogni
chiamata.
Da qualche parte deve esserci un oggetto non troppo dissimile da
filesystemobject.folder che viene creato alla prima chiamata di dir()
e cancellato solo alla chiamata successiva, quindi finche' l'oggetto
esiste, la directory e' bloccata...
Comunque io per smanettare coi file preferisco utilizzare
filesystemobject.
Ci sono dei metodi tipo FIleExists, FOlderExists e DeleteFOlder che
sembrano fare al caso tuo :D
cia'
Max

 Luciano
-- 
Ciao
Geppo