Newsgroup: it.comp.lang.visual-basic
Titolo: E' possibile recuperare il nome di una sub o function?

mi chiedevo se in vb6 fosse possibile recuperare il nome della function 
o della sub in automatico. Per la precisione, durante un On Error, 
quando vado a visualizzare il mio messaggio di errore vorrei anche 
tracciare la funzione o la sub che lo ha generato, senza ovviamente 
dover seminare stringhe per ogni sub o function.
Ringrazio anticipatamente
CsK

CsK ha scritto:

Con SendMessage puoi determinare se una Function o Sub esiste
all'interno di un oggetto con Handle(quindi una Form), ma del resto mi
sembra una domanda strana......
On Error è attivo a livello di Sub/Function quindi è ovvio che sai in
che punto sei.... chiaro che devi realizzare una gestione di Debug o
Log errori, devi realizzare una gestione centralizzata della cosa, a
quel punto dalla gestione chiamerai un metodo Public del tuo
applicativo al quale passi non solo il Nome Function/Sub ma Err.Number
ed Err.Description e magari i valori in ingresso alla Sub/Funtcion....
Sinceramente non capisco il tuo problema...!
@Alex

 Sinceramente non capisco il tuo problema...!
Se devi fare un log con lo stack delle chiamate ti serve il nome della 
funzione.
In vb6 non puoi, devi seminare stringhe.
Il massimo che puoi fare è automatizzare la cosa definendo il tuo template 
per l'on error con strumenti tipo gli mztools.
Ciao 

 Ciao
@Alex

 
Saluti
CsK

 errore... ed eventualmente perchè...!
Non è affatto vero.
Una funzione può essere richiamata da chissà quanti punti e per chissà quali 
motivi, se inizi ad avere una decina di dll che si richiamano a vicenda ti 
sfido a capire da chi è partita la chiamata e anche dove si è verificato 
l'errore.
In quanto al motivo dell'errore, quando hai un bel "Errore generato 
dall'applicazione" o anche un chiaro "Division by zero", come cavolo fai a 
sapere qual è la variabile che è a zero e perchè?
Spesso anche avendo tutti i log del mondo l'unico modo per capire cosa 
succede è mettersi in debug...
Ciao 

 possibile.
Bè, non è poi così problematico!
La mia applicazione è abbastanza coplessa ed utilizza pesantemente
Subclassing e librerie esterne quindi, essendo il codice molto
asincrono, sarebbe impossibile identificare una chiamata senza entrare
in debug (come già detto da Fabio) , e a volte è un casino anche
così!!
Usando MZTools ti crei un bel template e quando crei una nuova funzione
con un click hai l'intestazione e la gestione degli errori in
automatico!
Per esempio il mio tamplate è:
    On Error GoTo {PROCEDURE_NAME}_Error
	{PROCEDURE_BODY}
    On Error GoTo 0
    Exit {PROCEDURE_TYPE}
{PROCEDURE_NAME}_Error:
    Debug.Print "{MODULE_NAME}::{PROCEDURE_NAME}", Err.Description
    Error.TraceError Err.Number, _
                     Err.Description, _
                     "{MODULE_TYPE} {MODULE_NAME}", _
                     "{PROCEDURE_NAME}", _
                     vbNullString, _
                     True, _
                     Me.hWnd, _
                     MB_ICONASTERISK
Dove l'oggetto Error è la classe che mi gestisce l'errore: la
visualizzazione, il trace ecc...
Più facile di così!!
Ciao
Daniele.

 Ciao
Grazie
@Alex

 Piů facile di cosě!!
Il mio č abbastanza simile (d'altra parte non č che ci si possa sbizzarrire 
piů di tanto), solo che le info sono inserite nello stack a inizio procedura 
con un Push e un Pop lo riporta indietro all'uscita.
Ciao 


Contrariamente a quanto la maggior parte degli sviluppatori pensa la risposta è
SI, anche se per far ciò occorre un cocktail di tecniche estremamente avanzate.
Cari signori, è possibile ottenere lo "Stack trace" di un programma VB in
compilato, purché il programma (e le eventuali DLL) sia compilato con l'opzione
"Create symbolic debug info" e che il file PDB così generato venga distribuito
insieme all'EXE.
Serve poi fare ricorso all'API StackWalk e a un certo numero di altri "trucchi",
ma ci si riesce.
Si arriva perfino al *numero di riga del sorgente* (non intendo la label, ma
proprio la linea nel file .bas o .frm!!!). Praticamente lo stesso livello di
dettaglio che si ottiene con la compilazione in configurazione debug usando
VB.NET
!
Fortunatamente i ragazzi del Visual Studio Magazine hanno preparato un esempio
corredato di codice ben incapsulato e quindi riutilizzabile in ogni altra
applicazione.
Lo trovate qui, anche se per scaricarlo occorre registrarsi (gratuitamente):
http://www.ftponline.com/vsm/2002_05/magazine/columns/blackbelt/default_pf.aspx
Sia lodato Dan Fergus...
Bye
Raf
-----------------------------------------------------
Funk: cooler than the other side of the pillow.

 Sia lodato Dan Fergus...
Sempre!
Ciao
Daniele.

 abbastanza impensabili!!
Cioè chi non ha comprato il libro si attacca :)
Ciao 

Fabio ha scritto:

Dunque...ti cito esattamente cosa c'è scritto sul libro:
"..Tutte le descrizioni sono nel file VBoostType.tlb, mentre le
implementazione C++ risiede nella libreria VBoost6.dll. Siete liberi di
ridistribuire la Dll. Tuttavia non siete liberi di ridistribuire il
file .tlb (a meno che non vogliate spedire una copia omaggio del libro
con esso)"
Ora...non so se si tratta sempre dello stesso oggetto....a vederlo
così mi sembra di si..
Ciao
Daniele.

Barzo@Google ha scritto:

Bene, mi sembra una cosa decisamente chiara, propongo che Daniele possa
distribuire una copia omaggio a tutti gli interessati.
;-)
Ovviamente i osono il 1° in lista.
@Alex

 Daniele.
-- 


 né nel CD allegato.
Sarà, comunque nessuno di questi files è reperibile in internet.
Ciao 


Se ti registri (gratuitamente) a FTPOnline puoi scaricare i sorgenti di esempio
(vs0205bb.zip) che contengono anche VBoostTypes6.olb.
Era il link che ho riportato nel mio primo post.
http://www.ftponline.com/vsm/2002_05/magazine/columns/blackbelt/default_pf.aspx
Ciao

 (vs0205bb.zip) che contengono anche VBoostTypes6.olb.
In teoria con il file allegato ai sorgenti si dovrebbe essere a posto
essendo una Object Library.
La VBoost è un'interfaccia per la gestione di Stringhe, allocazione di
memoria, SAFEARRAY e COM a basso livello, l'implementazione
Ciao.
Daniele.

 Ovviamente i osono il 1° in lista.
Bè, altrimenti puoi fare come me che me lo sono fatto comperare dalla
ditta!! ;-)
Ciao,
Daniele.

 
http://www.ftponline.com/vsm/2002_05/magazine/columns/blackbelt/default_pf.aspx
Posso maledire la gestione delle cartelle zip in XP?
Prima avevo estratto i files dallo zip ma mi aveva estratto solo i sorgenti 
e il readme... non è la prima volta che mi fa scherzi di questo tipo.
Ciao, grazie. 

Barzo@Google ha scritto:

Mi verrebbe da essere cattivo...(non con te ovvio) ma è proprio vero
allora che ognuno ha l'azienda che si merita...??
Eppure io pensavo di essere un bravo bimbo....!!
@Alex

 Eppure io pensavo di essere un bravo bimbo....!!
beh, Ale, c'è chi ha fatto peggio...
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 beh, Ale, c'è chi ha fatto peggio...
Ehehehe....
Vabbè mi consolo vuoi dire....?
Anzi me lo compro io e lo metto a disposizione dell'azienda. ;-) 
@Alex

 Anzi me lo compro io e lo metto a disposizione dell'azienda. ;-)
Bravo. Posso venire a fare le fotocopie?


 Bravo. Posso venire a fare le fotocopie?
Eccome no, se abiti vicino e porti il Balena ci scambiamo le
fotocopie....!
;-)
però non facciamo pubblicità sai quanti ne saltano fuori di
richiedenti....
@Alex