Newsgroup: it.comp.lang.visual-basic
Titolo: E' possibile modificare l'errore run-time?

Ciao a tutti
una curiosità è possibile modificare l'errore di run-time con un messaggio 
personalizzato?
Grazie in anticipo.

personalizzato?
  Basta che lo intercetti e a quel punto, conoscendone il codice, ti
crei tu il messaggio che vuoi.
-- 
  Ciao :-)
  Massimo
Nell'indirizzo, sostituire "micio" con "mc"

personalizzato?
On Error Goto...  e poi un MsgBox
--
ciao
  Stefano


wrote:

Catchi l'errore e mostri una Message di tuo gradimento (se è ho capito
quello che vuoi fare)

 ha scritto nel messaggio 
news:u49hh3lknsf6er3dj...@4ax.com...

Ok, ma vorrei un qualcosa di generico valido per l'intero progetto.
On Error Goto invece lo devo scrivere per ogni singola funzione, evento, 
ecc.  o sbaglio?
Grazie 

ecc.  o sbaglio?
Si, ma la gestione degli errori di VB è questa, e  c'è poco da fare e tra
l'altro secondo me  è uno dei difetti di VB.
Per evitarla a volte conviene usare le API perchè se ad esempio fai un accesso
ad un file che non esiste da VB ottieni un runtime error e ti sbatte fuori dal
programma.
Se però prima ci fai un test con la  GetFileAttributes ottieni un valore
numerico da gestire ed eviti il runtime error.
E gli esempi possono essere diversi.
--
ciao
  Stefano

 numerico da gestire ed eviti il runtime error.
Scusa, fammi capire, non riesci a gestire quest'errore da VB ?
Vedo quattro possibilità:
1) stai parlando di qualcosa che non mi è mai capitato
    (e uso il VB dalla 1.0)
2) non ho capito cosa intendi dire
3) ti sei spiegato male
4) ti stai sbagliando
Onestamente punterei sulla 3, ma non escludo niente :-)
P.S.: io faccio così (più o meno):
*****************
Private Sub Command1_Click()
Dim NomeFile As String
Dim FileLibero As Integer
NomeFile = "c:\blabla.txt"
FileLibero = FreeFile
On Error GoTo Gest_err
Open NomeFile For Input As #FileLibero
MsgBox "Questa è la riga successiva"
Exit Sub
Gest_err:
MsgBox "Si è verificato un errore " & Err.Number & _
": " & Err.Description & ", file corrente: " _
& NomeFile
Resume Next
End Sub
*****************
Bye, G.

Onestamente punterei sulla 3, ma non escludo niente :-)
Ti ringrazio della fiducia, probabilmente mi sono spiegato male.
Per evitare di mettere On Error GoTo in ogni routine ma intercettare l'errore
prima, io faccio così:
Declare Function GetFileAttributes Lib "kernel32.dll" Alias "GetFileAttributesA"
(ByVal lpFileName As String) As Long
If GetFileAttributes ("C:\Pippo.txt") > 0 Then
  Open "C:\Pippo.txt" For Input As #F%
  ....
  Close
Else
  Msgbox "file not found"
End if
(ci sarebbe da gestire il FILE_ATTRIBUTE_DIRECTORY, ma l'ho trascurato
volutamente)
Poi non è molto ortodosso, lo so, ma a me la gestione degli errori di VB che ti
fa uscire dal programma piace poco, e comunque ci sono casi in cui non si può
comunque evitare l' On Error GoTo.
--
ciao
  Stefano

 ha scritto nel messaggio
news:vgkjh3h5annke5pau...@4ax.com...


 If GetFileAttributes ("C:\Pippo.txt") > 0 Then
Allora è più facile e magari anche veloce così:
If Len (Dir$("C:\Pippo.txt")) = 0 Then
Oh, la sintassi può sembrare strana, ma è la stessa cosa
di fare If Dir$(blabla)<>"" con il vantaggio che il confronto
fra numeri della Len è più veloce del confronto fra stringhe.
Se ne è parlato varie volte tempo fa :-)
Bye, G.

Se ne č parlato varie volte tempo fa :-)
Non č proprio la stessa cosa, se fai l'istruzione Dir da VB su un floppy o su un
CD e questo non č presente ottieni un ' Runtime Error n.52 ' mentre se usi la
GetFileAttributes ottieni il valore -1 e nessun errore, quindi non ti serve la
On Error GoTo.
Mi ricordo che ho iniziato a usare GetFileAttributes proprio per evitare errori
con i floppy, che adesso sono preistoria, lo so.
Inoltre usare il meno possibile  On Error GoTo rende il programma piů veloce e
piů corto, cosa che con i pc di oggi ha un valore relativo, ne convengo.
--
ciao
  Stefano

 CD e questo non è presente ottieni un ' Runtime Error n.52 '
Non mi risulta. Ho appena provato, e non mi dà errori in nessun
caso. Ho provato anche su un device che proprio non esiste, su
device esistente ma vuoto, e con un disco dentro ma senza il file.
Se il disco c'è, e contiene il file, mi ritorna il nome del file.
******************
Debug.Print Dir$("a:\test.txt") & "<--"
Debug.Print Dir$("b:\test.txt") & "<--"
Debug.Print Dir$("c:\test.txt") & "<--"
Debug.Print Dir$("d:\test.txt") & "<--"
Debug.Print Dir$("e:\test.txt") & "<--"
Debug.Print Dir$("f:\test.txt") & "<--"
Debug.Print Dir$("g:\test.txt") & "<--"
Debug.Print Dir$("h:\test.txt") & "<--"
Debug.Print Dir$("i:\test.txt") & "<--"
Debug.Print Dir$("l:\test.txt") & "<--"
******************
<--
<--
test.txt<--
<--
<--
<--
<--
<--
<--
<--
******************
Bye, G. 

"SB" ha scritto nel messaggio

Provato adesso:
Private Sub Form_Load()
 Dim a
  a = Dir("C:\")
  Debug.Print a
End Sub
Nella finestra immediata leggo
SCANDISK.LOG
Se provo con H: mi da Errore n.52
http://tinypic.com/view.php?pic=fe2ert&s=2
Uso VB5 professional.
--
ciao
  Stefano

 Uso VB5 professional.
Io VB5 Enterprise SP3.
...un dubbio... tu hai messo il Service Pack 3 ?
Di base, il VB5 senza nessun SP è piuttosto "ballerino", 'con' è una roccia.
Bye, G. 

Di base, il VB5 senza nessun SP è piuttosto "ballerino", 'con' è una roccia.
Ho controllato e per sicurezza anche rimesso SP3.
L'errore non me lo da su A o B non presenti come driver, me lo da solo su H: e
J: che sono un cd-RW vuoto e un cd virtuale usato per le immagini .iso, andando
avanti con K:\, L:\ non mi da errore.
Boh, io comunque uso sempre GetFileAttributes() , tanto per stare nel sicuro.
--
ciao
  Stefano