![]() |
| |||||||
| Registrarse | Preguntas Frecuentes | Lista de Foreros | Calendario | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
| | LinkBack | Herramientas | Desplegado |
| |||
| Hola Amig***s.... como puedo saber el nombre de la funcion o sub donde estoy trabajando por el ejemplo para saber el nombre de mi formulario escribo Me.Name en cualquier parte.. pero si estoy en una funcion o sub... como sería? Private Sub Saludar() Debug.WriteLine("Hola estoy en la funcion " & EstaFuncion) End Sub agradesco cualquier comentario.. Jairo |
| | ||||
| ||||
| |
| |||
| "Lord Voldemort" <lordvoldemort8***gmail.com> escribió en el mensaje news:%23DYPHUnQIHA.5980***TK2MSFTNGP04.phx.gbl... > Hola Amig***s.... > > como puedo saber el nombre de la funcion o sub donde estoy trabajando > por el ejemplo para saber el nombre de mi formulario escribo Me.Name en > cualquier parte.. > > pero si estoy en una funcion o sub... como sería? > > Private Sub Saludar() > Debug.WriteLine("Hola estoy en la funcion " & EstaFuncion) > > End Sub > > > agradesco cualquier comentario.. ¿miras unas lineas más arriba? |
| |||
| "Lord Voldemort" <lordvoldemort8***gmail.com> wrote in message news:%23DYPHUnQIHA.5980***TK2MSFTNGP04.phx.gbl... > como puedo saber el nombre de la funcion o sub donde estoy trabajando > por el ejemplo para saber el nombre de mi formulario escribo Me.Name en > cualquier parte.. > > pero si estoy en una funcion o sub... como sería? > > Private Sub Saludar() > Debug.WriteLine("Hola estoy en la funcion " & EstaFuncion) > > End Sub > Puedes usar la clase StackTrace para sacar la información del método en ejecución. GetFrame(0) te da el último StackFrame de la pila de llamadas, y luego llamas a la función GetMethod del StackFrame, que te dará un MethodBase. El MethodBase tiene una propiedad "Name" que te da el nombre de la función. Dim st As New System.Diagnostics.StackTrace() nombreMetodo = st.GetFrame(0).GetMethod().Name |
| |||
| excelente Funciona... Gracias Alberto.. .... Jairo "Alberto Poblacion" <earthling-quitaestoparacontestar***poblacion.org> escribió en el mensaje news:O9p5d5tQIHA.5164***TK2MSFTNGP03.phx.gbl... > "Lord Voldemort" <lordvoldemort8***gmail.com> wrote in message > news:%23DYPHUnQIHA.5980***TK2MSFTNGP04.phx.gbl... >> como puedo saber el nombre de la funcion o sub donde estoy trabajando >> por el ejemplo para saber el nombre de mi formulario escribo Me.Name en >> cualquier parte.. >> >> pero si estoy en una funcion o sub... como sería? >> >> Private Sub Saludar() >> Debug.WriteLine("Hola estoy en la funcion " & EstaFuncion) >> >> End Sub >> > > Puedes usar la clase StackTrace para sacar la información del método en > ejecución. GetFrame(0) te da el último StackFrame de la pila de llamadas, > y luego llamas a la función GetMethod del StackFrame, que te dará un > MethodBase. El MethodBase tiene una propiedad "Name" que te da el nombre > de la función. > > Dim st As New System.Diagnostics.StackTrace() > nombreMetodo = st.GetFrame(0).GetMethod().Name > > |
| |||
| "Lord Voldemort" <lordvoldemort8***gmail.com> escribió en el mensaje news:uX0Qk2wQIHA.2396***TK2MSFTNGP02.phx.gbl... > excelente Funciona... > > Gracias Alberto.. Hola, Jairo: Aunque mi respuesta puede haber parecido sarcástica, es absolutamente razonable. El CLR no mantiene una estructura StackTrace completa según vas llamando a las funciones: almacena la información mínima necesaria para poder retornar al punto de llamada una vez la función en ejecución concluye. Cuando se produce una excepción, o cuando el usuario llama explícitamente a un método de StackTrace, se construyen las estructuras completas. Y es un proceso relativamente pesado. El objeto "Me" existe para permitir la resolución de ambigüedades en el código de una clase. Si, por ejemplo, tuvieras en una clase o formulario: Public Nombre As String Public Sub SetNombre(Nombre As String) Me.Nombre = Nombre End Sub, Me.Nombre se usa para indicar que nos referimos al miembro público "Nombre" de la instancia, y no al argumento Nombre de la función. De manera que no tiene sentido que exista algo como Me para las funciones. Imagino que necesitas poder acceder genéricamente al nombre de la función en ejecución para una rutina de manejo de excepciones o de trazado del camino de ejecución. Si se trata de una rutina de manejo de excepciones, la clase Exception expone el objeto StackTrace, que te permite acceder a la información requerida sin necesidad de utilizar referencias a otros objetos o clases. El método descrito por Albero tambien aplica para el StackTrace de las excepciones. Si lo que quieres es trazar la ejecución del código, hay herramientas que lo hacen excelentemente sin necesidad de que alteres tu código -profilers y analizadores de cobertura (code coverage): soy un poco rudimentario, de manera que no uso ninguno y sólo puedo decirte que existen, y creo que VS incluye un profiler. Por 40 USD (si no ha subido) puedes comprar las MZ Tools para VS2003 y posteriores, que son una excelente ayuda para el desarrollo formalizado. El IDE de VS es más completo que el de VB6, de manera que las MZTools no resultan tan espectaculares como en VB6, pero pueden servirte para definir plantillas de código en las que establezcas un procedimiento estándar de declaración de funciones que incluyan el trazado de ejecución condicionalmente (en función de la configuracion Debug/Release), por ejemplo. Esas plantillas te permiten acceder genéricamente al nombre de la función, pero lo reemplazan por un valor constante en tiempo de desarrollo. Son mucho más fáciles de defiir que los "snippets" de VS2005, y las tienes igualmente disponibles. Salud! |
| |||
| Hola Leonardo... en realidad yo quede buscando "arriba..." un correo que dijera algo pero no encontre na'a... pense quizas mi outlook no lo bajo dije.. Realmente el mztool para vb6 es grandioso tanto que no podia vivir sin el. jejeje en la programada... En realidad no quiero hacer mucho con la funcion. tan solo eso, cuando exista un error, que diga en que funcion se dio, pero no quiero estar escribiendo el nombre de la funcion, ya que cuando creo una nueva funcion realmente no la saco de la nada, sino que la copio de una mas o menos parecida a lo que ocupo en ese momento, y a veces cuando estoy ejecutando me dice...error en la funcion Calcular, que no es asi porque el error fue en la nueva funcion, y pues me ha sucedido mas o menos unas cuantas veces... y ya me tenia a "pichinga" probando lo que me dijo alberto. me sale asi.. Se ha producido un error en la función EjecutarComando Fecha: 20/12/2007 09:58:37 a.m. --------------------------------------------------------------- Table 'molinita.bancosgg' doesn't exist ************************************************** ************* hasta lueguito... Jairo "Leonardo Azpurua" <l e o n a r d o [arroba] m v p s [punto] o r g> escribió en el mensaje news:%23gdAOrxQIHA.1184***TK2MSFTNGP04.phx.gbl... > > "Lord Voldemort" <lordvoldemort8***gmail.com> escribió en el mensaje > news:uX0Qk2wQIHA.2396***TK2MSFTNGP02.phx.gbl... >> excelente Funciona... >> >> Gracias Alberto.. > > Hola, Jairo: > > Aunque mi respuesta puede haber parecido sarcástica, es absolutamente > razonable. > > El CLR no mantiene una estructura StackTrace completa según vas llamando a > las funciones: almacena la información mínima necesaria para poder > retornar al punto de llamada una vez la función en ejecución concluye. > Cuando se produce una excepción, o cuando el usuario llama explícitamente > a un método de StackTrace, se construyen las estructuras completas. Y es > un proceso relativamente pesado. > > El objeto "Me" existe para permitir la resolución de ambigüedades en el > código de una clase. Si, por ejemplo, tuvieras en una clase o formulario: > > Public Nombre As String > Public Sub SetNombre(Nombre As String) > Me.Nombre = Nombre > End Sub, > > Me.Nombre se usa para indicar que nos referimos al miembro público > "Nombre" de la instancia, y no al argumento Nombre de la función. > > De manera que no tiene sentido que exista algo como Me para las funciones. > > Imagino que necesitas poder acceder genéricamente al nombre de la función > en ejecución para una rutina de manejo de excepciones o de trazado del > camino de ejecución. > > Si se trata de una rutina de manejo de excepciones, la clase Exception > expone el objeto StackTrace, que te permite acceder a la información > requerida sin necesidad de utilizar referencias a otros objetos o clases. > El método descrito por Albero tambien aplica para el StackTrace de las > excepciones. > > Si lo que quieres es trazar la ejecución del código, hay herramientas que > lo hacen excelentemente sin necesidad de que alteres tu código -profilers > y analizadores de cobertura (code coverage): soy un poco rudimentario, de > manera que no uso ninguno y sólo puedo decirte que existen, y creo que VS > incluye un profiler. > > Por 40 USD (si no ha subido) puedes comprar las MZ Tools para VS2003 y > posteriores, que son una excelente ayuda para el desarrollo formalizado. > El IDE de VS es más completo que el de VB6, de manera que las MZTools no > resultan tan espectaculares como en VB6, pero pueden servirte para definir > plantillas de código en las que establezcas un procedimiento estándar de > declaración de funciones que incluyan el trazado de ejecución > condicionalmente (en función de la configuracion Debug/Release), por > ejemplo. Esas plantillas te permiten acceder genéricamente al nombre de la > función, pero lo reemplazan por un valor constante en tiempo de > desarrollo. Son mucho más fáciles de defiir que los "snippets" de VS2005, > y las tienes igualmente disponibles. > > Salud! > > |
| |
| |
![]() |
| Herramientas | |
| Desplegado | |
| |
Temas Similares | ||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| funcion el nombre del objeto no es valido | Edgar Brito | Newsgroup microsoft.public.es.sqlserver | 3 | 26-06-2008 18:10:01 |
| Re: Siempre me ha parecido impúdico firmar con mi propio nombre. Es una tontería, lo sé, porque al fin y al cabo ¿cuál es el verdadero nombre, el nombre propio de una persona? ¿Acaso el que le impusieron al nacer, que es una suerte de capricho patern | zinnia | Newsgroup es.humanidades.literatura | 0 | 18-06-2008 18:30:14 |
| Función "En nombre de" en owa, es posible? | Javi \(CC\) | Newsgroup microsoft.public.es.exchange | 1 | 20-02-2008 12:36:55 |
| Nombre de una funcion | Pere Pujal i Carabantes | Newsgroup es.comp.os.linux.programacion | 40 | 24-12-2007 08:08:19 |
| Obtener el nombre de menu dentro de la funcion llamada. | Tomas | Newsgroup microsoft.public.es.vc | 12 | 10-05-2007 07:20:39 |