Newsgroup: it.comp.lang.visual-basic
Titolo: Gestione errori....

Ciao a tutti....
lurkando su google ho avuto conferma di quello che già supponevo, cioè che è 
impossibile ottenere il numero di riga in cui avviene un errore su un 
progetto
compilato, poichè il compilatore e il linker hanno tradotto il file sorgente 
in eeguibile.
Quello che mi chiedevo è questo. E' possibile ricavare almeno la sub in cui 
avviene l'errore?
Grazie mille
IAK 

PiantoTardivo ha scritto:

beh, mica vero
ciao,roby

 ha scritto nel messaggio 
news:431d5...@x-privat.org...

Questo è quanto venuto fuori da una rapida ricerca su google...
Allora come potrei fare per ricavare il numero di riga e il nome della sub 
in cui è avvenuto l'errore?
Qualsiasi aiuto sarà molto apprezzato
Grazie
IAK 

 IAK 
allora io faccio così ( ti posto un esempietto di una sub di un mio 
progetto:
Private Sub EsportaRecord(Macchina As String, Commessa As String, DATA 
As Date, OraInizio As Date, OraFine As Date, _
                          minuti As Double, TipoLavorazione As String, 
CausaScarto As String, Operatore As String, _
                          metri As Long)
      Dim numFile As Integer
      Dim str As String
On Error GoTo HELL
10   str = Macchina & " " & Commessa & " " & DATA & " " & OraInizio & " 
" & OraFine & " " _
            & CStr(minuti) & " " & TipoLavorazione & " " & CausaScarto & 
" " & Operatore
20   numFile = FreeFile
30   Open Param.Stringa("PercorsoExport") & "lettura.txt" For Append As 
#numFile
40      Print #numFile, str
50   Close #numFile
60   FileCopy Param.Stringa("PercorsoExport") & "lettura.txt", "..\Log\" 
& TextCommessa.Text & "_Fermate.txt"
HELL:
    If Err.Number <> 0 Then
       LogError Me.Name, "EsportaRecord", Err.Description, Err.Number, Erl
    End If
  End Sub
come vedi ho numerato le righe di codice, e se c'è un errore mando 
all'inferno l'esecuzione e richiamo la LogError: (messa su un modulo)
Public Sub LogError(nomeForm As String, nomeSub As String, 
descrizioneErrore As String, numeroerrore As String, riga As String)
     Dim numFile As Integer
     Dim str As String
'On Error Resume Next
10    str = Now & " : Errore in : " & nomeForm & " / " & nomeSub & " --> 
" & descrizioneErrore & _
         "(Error Code " & numeroerrore & " / Riga : " & riga & ")"
20   If Not FileExists("..\LogErrori") Then
30      MkDir "..\LogErrori\"
40   End If
50   numFile = FreeFile
60  Open "..\LogErrori\Err_" & Format(Now, "dd.mm.yy") & ".txt" For 
Append As #numFile
70    Print #numFile, str
80  Close #numFile
90        MsgBox nomeForm & Chr(13) & Chr(10) & nomeSub & Chr(13) & 
Chr(10) _
           & "Errore : " & Err.Number & " - " & Err.Description & 
Chr(13) & Chr(10) _
           & "Riga : " & Erl
End Sub
alla fine ti troveri con un bel file di testo con questo formato:
04/05/2004 11.07.37 : Errore in : LavorazioneForm / EsportaRecord --> 
Nome o numero di file non valido(Error Code 52 / Riga : 30)
04/05/2004 11.24.12 : Errore in : LavorazioneForm / cmdStop_Click --> 
Informazioni sulla colonna chiave insufficienti o errate. Troppe righe 
interessate dall'aggiornamento.(Error Code -
2147467259
 / Riga : 260)
spero di esserti stato di aiuto.
ciao, roby

 ha scritto nel messaggio 
news:431d5b41$1...@x-privat.org...

Certo che lo sei stato...
Stavo infatti pensando anchi io all'utilizzo della funzione Erl....
E infatti ho scaricato una utility per numerare tutte le righe del 
codice....
però:
quando chiami la tua sub di gestione degli errori gli passi (come da 
esempio) questa roba
LogError Me.Name, "EsportaRecord", Err.Description, Err.Number, Erl
Chiaramente tutto ok! Ma invece di "EsportaRecord" che è il nome della tua 
sub non esiste
un comando o qualcosa di simile del tipo (invento) 
sub.name
 per rendere il 
comando universale per tutte le sub?????
Ipoteticamente (invento ancora) creare una roba del genere
LogError Me.Name, ThisSub.Name, Err.Description, Err.Number, Erl

 comando universale per tutte le sub?????
Prova a scaricare mztools.
ciao
	maxx


Oltre a seguire il consiglio di emmexx di scaricare MzTools per numerare le
righe e tante altre utility, cerca di non postare sempre tutto il contenuto
delle risposte.
Qualcuno potrebbe leggere il NG con una connessione lenta o addirittura da
un palmare.
Ciao, Vincenzo