PDA

Ver la Versión Completa : Quien llama ese Metodo?


lunicirus
12-10-2012, 23:38:46
Hola
Quisiera saber si hay alguna forma de saber que metodos llaman a un metodo en especifico, en eclipse cuando yo trabajaba con java se llamaba como Call Hierarchy, en delphi hay algo parecido?
Muchas gracias

Al González
13-10-2012, 00:21:17
En Delphi no existe esa característica, al menos no en los ejecutables para Windows. Considera que éste es un lenguaje compilado a código máquina, a diferencia de Java que es como los antiguos lenguajes interpretados (claro, bajo las nuevas tendencias de "código manejado").

No obstante, existen situaciones específicas de programación donde a falta de esa característica puede conseguirse el objetivo. ¿Cuál es tu caso concreto?

Agrego: Sin embargo, el estupendo depurador integrado sí que te permite ver el camino que siguió el programa hasta un punto específico del código, es decir la pila de llamadas (call stack), ventana que aparece con la combinación de teclas Ctrl+Alt+S y útil cuando el programa está detenido en un punto de ruptura / interrupción (break point). Es decir, si tu necesidad es de depuración, la tarea está resuelta. :)

Saludos.

lunicirus
13-10-2012, 01:17:46
Hola,
No lo que pasa es que tengo que modificar un programa que ya esta hecho, y quiero borrar y modificar algunos metodos, pero como no se quien los utiliza no se donde mas modificar, me hago entender?
Saludos

novato_erick
13-10-2012, 01:31:17
Empezando por:

lunicirus:

Hola
Quisiera saber si hay alguna forma de saber que metodos llaman a un metodo en especifico, en eclipse cuando yo trabajaba con java se llamaba como Call Hierarchy, en delphi hay algo parecido?



De lo que me acuerdo en la Universidad utilizando Eclipse el Call Hierarchy es solamente una Herramienta que te muestra los métodos que son llamados.. y los métodos son:
1. Un bloque de código que tiene un nombre,
2. Recibe unos parámetros o argumentos (opcionalmente),
3. Contiene sentencias o instrucciones para realizar algo (opcionalmente) y devuelve un valor de algún Tipo conocido (opcionalmente).

En delphi y perdónenme mis compañeros del ClubDelphi si me equivoco y corrijan. son llamados Funciones y no es más que un bloque de código que puede utilizarse en repetidas ocasiones sin que haya necesidad de duplicarlo es por eso que usamos la función.

En Delphi tenemos procedimientos y funciones y estas últimas se distinguen de aquellos en que las funciones devuelven un resultado.

Para En realidad no he visto una herramienta especifica que realice eso: pero como dice: Al González: En Delphi no existe esa característica, al menos no en los ejecutables para Windows.

Lo que te puedo sugerir es utilizar el Depurador de Delphi y poner un punto de Interrupción (Break Point) como lo menciono nuestro amigo Al González. Aprovecho y Saludos...

Espero que te haya evacuado duda...


Saludos


novato_erick

Al González
13-10-2012, 02:56:11
[...] quiero borrar y modificar algunos metodos, pero como no se quien los utiliza no se donde mas modificar, me hago entender?
Esta vez sí.

En ese caso lo más recomendable es hacer una búsqueda sobre múltiples archivos, usando la opción Find in Files del propio entorno de Delphi (menú Search o si prefieres Ctrl+F seguido de Ctrl+Tab).

Por otro lado, si apenas comienzas con Delphi, quizá valga la pena no borrar nada del código que hizo el programador anterior hasta que lo hayas dominado un poco.

Respecto a los métodos, Erick, lo son tanto en Delphi como en Java, sólo que en Delphi además hay rutinas (procedimientos y funciones) que no pertenecen a ninguna clase —a mí me gusta pensar que son métodos de una clase implícita aplicación—*. :)

Saludos.

Al González.

* Y ojalá algún día nos permitan hacerlos virtuales. ;)

Delphius
13-10-2012, 07:45:56
sólo que en Delphi además hay rutinas (procedimientos y funciones) que no pertenecen a ninguna clase —a mí me gusta pensar que son métodos de una clase implícita aplicación—*. :)

Saludos.

Al González.

* Y ojalá algún día nos permitan hacerlos virtuales. ;)
Bueno, no es que pertenezcan a una clase implícita... sino que es algo que ha heredado y mantiene compatibilidad con Pascal (que no Object Pascal).

No creo que se le permita hacerlos virtual... ¡es que no tiene sentido en el paradigma estructurado un procedimiento o función virtual! El concepto de "virtual" se da en paradigma OO. ;)

Saludos,

Al González
13-10-2012, 15:52:10
¡Ouch! Creo que me faltó poner más caritas. :p

Delphius
13-10-2012, 16:02:06
¡Ouch! Creo que me faltó poner más caritas. :p
No te preocupes, yo también he pensado sobre esa duda... y durante un tiempo en vez de considerar a Delphi un LOO lo llamaba híbrido justamente por la posibilidad de seguir el pensamiento estructurado.

Pero ahora tengo que confesar que anoche me surgió la duda de si ya desde Pascal existía la sobrecarga. Me falla la memoria al intentar recordar si alguna vez en cátedra de Lenguajes la habré puesto en práctica.

Como bien sabemos, quizá no podemos hacer un procedimiento o función virtual, pero si sobrecargarlo.

Si la cláusula overload apareció recién con Object Pascal entonces, es que se extendió el concepto estructurado.

Saludos,
PD: Por cierto Al, esta tarde me pongo a ver bien lo que te comenté sobre el TObjectList. Espero poder llegar a buen puerto. Te pasaré las novedades. Si sabes algo más que podría servirme de ayuda te agradecería el dato.

AzidRain
13-10-2012, 19:42:47
Yo utilizo una característica de D2007 que si bien es para otra cosa, igual me sirve. Utilizo el rafactoring de la siguiente manera, ubico alguna referencia al método o variable que quiero, selecciono "refactor" y después la opción de renombrar (aunque no lo vaya a hacer realmente) le indico que me muestre previamente los cambios y acepto. En la lista de refactoraje aparecen todos los lugares en donde se hace referencia al método o variable, con dos click me lleva al código. Unicamente no confirmo los cambios y listo.

Otra forma es con la opción Grep Searck de CnPack que hace lo mismo y es bastante potente.

lunicirus
13-10-2012, 21:07:35
Yo utilizo una característica de D2007 que si bien es para otra cosa, igual me sirve. Utilizo el rafactoring de la siguiente manera, ubico alguna referencia al método o variable que quiero, selecciono "refactor" y después la opción de renombrar (aunque no lo vaya a hacer realmente) le indico que me muestre previamente los cambios y acepto. En la lista de refactoraje aparecen todos los lugares en donde se hace referencia al método o variable, con dos click me lleva al código. Unicamente no confirmo los cambios y listo.

Otra forma es con la opción Grep Searck de CnPack que hace lo mismo y es bastante potente.

Gracias! esto me puede ser muy util.

Al González
14-10-2012, 23:58:07
A mí se me ocurre una forma más "natural" de hacer una búsqueda (además de estar disponible en todas las versiones de Delphi), que es como sugiere A.G. en este otro hilo: http://www.clubdelphi.com/foros/showthread.php?p=447001#post447001

Yo agregaría que conviene tener marcada la opción Find text at cursor en las opciones del editor (Editor Options / Properties) de la configuración de Delphi. :)

Un abrazo recursivo. ;)