Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Quien llama ese Metodo? (https://www.clubdelphi.com/foros/showthread.php?t=81124)

lunicirus 12-10-2012 23:38:46

Quien llama ese Metodo?
 
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

Cita:

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:
Cita:

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

Cita:

Empezado por lunicirus (Mensaje 446999)
[...] 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

Cita:

Empezado por Al González (Mensaje 447001)
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

Cita:

Empezado por Al González (Mensaje 447010)
¡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

Cita:

Empezado por AzidRain (Mensaje 447022)
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/show...001#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. ;)


La franja horaria es GMT +2. Ahora son las 20:46:43.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi