Newsgroup: it.comp.lang.visual-basic
Titolo: Conoscere il nome della sub corrente

Salve a tutti,
per una mia elucubrazione parametrica avrei bisogno di conoscere il nome 
della SUB o FUNCTION nella quale mi trovo, Si puň fare?.
Grazie e saluti
Paolo 

 della SUB o FUNCTION nella quale mi trovo, Si può fare?.
Secondo me hai degli errori non indifferenti di progettazione. Perchè ne hai
bisogno?
-- 
Emanuele Torrenti
http://torrenti.altervista.org

 della SUB o FUNCTION nella quale mi trovo, Si può fare?.
AFAIK in maniera diretta non è possibile, infatti, quando il programma viene
compilato, i nomi delle routine vengono sostituiti da numeri.
In ogni caso puoi ricorrere a degli sporchi trucci (tipo variabile globale
in cui memorizzi di volta in volta il nome della routine in cui ti trovi).

 ha scritto nel messaggio 
news:%ywSf.37391$A83.1...@twister1.libero.it...


 bisogno?
mi permetto di quotare.
-- 
ciao, hal

 ha scritto nel messaggio
news:slrne1ooe5....@oistux.ace...

Mi permetto di dirti che... mi dissocio :-P
E se ne avesse avuto bisogno, che so, per un gestore dell'errore
generalizzato, con logging esteso delle informazioni?
Qualcosa del tipo:
ErrorHandler:
    LogError Err.Number, Err.Description, CurrentProcedureName()
Cosa che, contrariamente a .NET, in VB6 non mi risulta sia possibile
fare....
...Sempre a pensar male voi, eh!!! ;-)
Notte
Raf

 generalizzato, con logging esteso delle informazioni?
<CUT>
Infatti mi servirebbe per lo scopo che ho postato sopra (non so se a 
sproposito).
Ciao
Paolo 

 fare....
Non credo si un grande problema sostituire con
ErrorHandler:
     LogError Err.Number, Err.Description, _
	"Nome_di_questa_funzione( " & param1 & ", " & param2 & ")"
-- 
ciao, hal

 ha scritto nel messaggio
news:slrne1qfei....@oistux.ace...

Chiaro ma cosě non puoi usare quel pezzo di codice come "snippet"
universale: devi necessariamente modificarlo per ciascuna sub/function, e
questo puň diventare un po' antipatico in un progetto di dimensioni
medio-grandi...
Per questo motivo io mi sono fatto un addin che lo "precompila" e lo
inserisce in tutte le sub.
Ciao
Raf

 inserisce in tutte le sub.
infatti e` questa la soluzione giusta, anzi, ad essere pignoli, non
andrebbe messo neanche in tutte le sub, se il codice e` ben fatto.
-- 
ciao, hal

 andrebbe messo neanche in tutte le sub, se il codice e` ben fatto.
se e' _veramente_ ben fatto, che bisogno hai di un error manager? :)

 se e' _veramente_ ben fatto, che bisogno hai di un error manager? :)
intendo errori come eccezioni in senso OOP.
un error manager che mi deve  intercettare il  classico  errore SQL
per istruzione malformata a  causa di un apice impazzito, non  deve
esistere,  perche`  serve  solo a  mascherare  un fiacco  codice di
gestione delle interrogazioni al database.
ci sono linguaggi che sfruttano il meccanismo di propagazione delle
eccezioni per segnalare  situazioni anomale,  altri che sfruttano i
valori di ritorno, altri ancora che usano ( o  permettono di usare,
costringono ad usare) entrambi.
visual basic e` uno di questi ultimi, dove in qualche caso non c'e`
scelta. 
faccio un esempio.
per verificare che un array, ricevuto come parametro, contenga uno
o piu` elementi, fino a visual basic 6  non esiste  altro modo che
intercettare un errore di out-of-bounds.
in altri casi, come l'accesso a risorse esterne, si puo` incappare
in eccezioni che occorre gestire.
ecco perche` scrivevo che  gli error handler servono, anche se non
in tutte le sub: una volta che ho validato i parametri di ingresso
nelle proprieta` e metodi pubblici, generalmente il codice privato
non necessita di altri gestori, sempre che non acceda direttamente
a risorse esterne.
-- 
ciao, hal

 andrebbe messo neanche in tutte le sub, se il codice e` ben fatto.
A dire il vero il mio addin è molto flessibile: posso scegliere in quali sub
aggiungerlo.
Ah, e per uno dei corollari della legge di Murphy gli errori di
programmazione sono molto più frequenti nelle procedure sprovviste di
gestore, per cui a volte meglio metterlo anche se non importa (nelle sub di
1" livello)...
Bye
Raf