Newsgroup: it.comp.lang.visual-basic
Titolo: Errore run-time 52 se leggo da lettore cd senza cd-rom inserito

Ciao a tutti,
solo oggi mi sono accorto per puro caso che se eseguo un
MsgBox Dir("e:\prova\prova.txt")
mi da l'errore in oggetto se nel lettore cd-rom (che si trova su "E:") non è 
presente nessun cd-rom.
Come posso evitare questo errore che manda in crash il programma?
Ho già cercato su Google ma non ho trovato nulla nei vecchi post.
Ringrazio tutti in anticipo.
Ciao
Emiliano 

 Ho già cercato su Google ma non ho trovato nulla nei vecchi post.
Non hai trovato nulla perche' non c'e' nulla da trovare... nel senso che 
quando accedi al file system, che sia su disco fisso, rete, o quant'altro, 
devi *sempre* fare la gestione degli errori, quella solita di VB, perche' ci 
sono mille motivi per cui puoi non avere accesso ad un percorso/file
Ciao
-- 
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown 

 Ho già cercato su Google ma non ho trovato nulla nei vecchi post.
qualcuno mi scannerà, a giusto titolo tra l'altro, però direttamente da
"Visula Basic 6, senza fatica Speedy - McGraw-Hill" pag. 123:
Function VerificaSeDrivrePronto(LetteraDelDrive as String) as Boolean
    Dim FileSystemObj
    Dim Drv
    Set FileSystemObj=CreateObject("Scripting.FileSystemObject")
    Set Drv=FileSystemObj.GetDrive(LetteraDelDrive)
    VerificaSeDrivePronto=Drv.IsReady
End Function
N.B. - come già molto discusso in passato, lo scripting non è molto ben
digerito dagli antivirus.

 digerito dagli antivirus.
Infatti.... :-((((
Ciao e grazie
Emiliano 

 ci sono mille motivi per cui puoi non avere accesso ad un percorso/file
In effetti per controllare l'eventuale errore che il percorso non fosse 
inesistente avevo scritto
If  Dir("e:\prova\prova.txt") = "" Then
    MsgBox "Non continuare"
Else
    MsgBox "Continua.."
End if
Però l'errore appare subito nella prima riga del codice....
Spero si possa risolvere in qualche modo senza disturbare antivirus e 
quant'altro
Grazie
Emiliano 

 ha scritto nel messaggio 
news:8o3id.253903$35.11...@news4.tin.it...



Quello che stavi facendo non controlla l'errore, ma l'esistenza di un file o 
cartella in un percorso *accessibile*... devi appunto considerare i casi in 
cui non lo sia.
Non devi disturbare nessun antivirus, basta il solito, caro, vecchio On 
Error
On Error GoTo DiskError:
If Dir("e:\prova\prova.txt") = "" Then
    MsgBox "Non continuare"
Else
    MsgBox "Continua.."
End If
Exit Sub
DiskError:
If MsgBox("Errore di accesso " & Err.Number & ": " _
    & vbCrLf & Err.Description, _
    vbCritical + vbAbortRetryIgnore) = vbRetry Then Resume
e qualcosa di molto simile vale per replicare la funzione che ti hanno 
postato senza utilizzare lo scripting



Ok, il tuo suggerimento e un buon vecchio manuale in lingua italiana mi 
hanno fatto capire....
Ciao e grazie.
Emiliano 


Ho utilizzato On Error Resume Next ed ho risolto, grazie mille!!
Ciao
Emiliano 

 Ho già cercato su Google ma non ho trovato nulla nei vecchi post.
senza voler nulla togliere alle soluzioni precedenti una alternativa 
puo' essere:
Option Explicit
Private Declare Function SHGetDiskFreeSpace Lib "shell32" _
Alias "SHGetDiskFreeSpaceA" (ByVal pszVolume As String, _
pqwFreeCaller As Currency, pqwTot As Currency, _
pqwFree As Currency) As Long
Private Sub Command1_Click()
     Dim Tot As Currency
     If SHGetDiskFreeSpace("e:\", Tot, Tot, Tot) = 0 Then
         MsgBox "Non continuare: disco mancante"
     ElseIf Dir("e:\prova\prova.txt") = "" Then
         MsgBox "Non continuare: percorso o file inesistente"
     Else
         MsgBox "Continua.."
     End If
End Sub
liberamente modificato da api-guide.
beppe