![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#6
|
||||
|
||||
|
Cita:
Tal vez es un poco tarde, pero te puede servir. Un método, como valor procedimental (cual es el caso de un TNotifyEvent), consiste de dos punteros o direcciones de memoria: Una es la dirección del método en sí (en qué byte de la memoria inicia su código máquina) y otra es la dirección de memoria del objeto con el que ha de ejecutarse dicho método. Para facilitar las cosas, Delphi cuenta con el tipo genérico TMethod: El campo Code es la dirección de memoria del código ejecutable del método y Data es la dirección de la instancia de objeto con la cual ha de ejecutarse. Puedes hacer un molde de tipo con TMethod para obtener alguno de los dos valores. Ahora, observa lo que dice la ayuda de Delphi sobre MethodName: Cita:
La parte que no se cumple está en "of the object", por lo que MethodName te funcionó solamente cuando lo llamaste con el formulario, ya que el manejador de eventos consultado pertenece a la misma clase del formulario. En pocas palabras no es lo mismo llamar a Formulario.MethodName que a Componente.MethodName. Si tienes un valor método, es decir, Code + Data, y Code es un método publicado, tendrás que preguntarle al objeto Data por el nombre de ese método. Solamente la clase (o las clases) a la que pertenece Data podrá darte su nombre. Entonces, para obtener el nombre del método desde el interior del componente es necesario descomponerlo en su Code y Data, preguntándole a Data cuál es el nombre de Code:
Cabe mencionar que MethodName es un método de clase, es decir, ejecutado por la clase a la que pertenece Data, como si la expresión fuera "TForm1.MethodName (ManejadorDeclaradoEnTForm1)". Para finalizar, decir que a partir de Delphi 2010, gracias a la reflexión extendida (nueva RTTI), algunas de estas cosas pueden realizarse con mayor facilidad. Espero no haberme "enrollado" demasiado. Saludos. Al González. ![]()
__________________
Tras casi seis años de trabajar para una empresa alemana como desarrollador Delphi, se vieron forzados a dejarme ir (temas presupuestales). Así que ahora estoy abierto a escuchar nuevas ofertas. |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| String a Cadena de Bytes a cadena Hexadecimal | ruedabeat2003 | Varios | 2 | 11-01-2012 02:04:06 |
| Convertir cadena aleatoria en cadena de N caracteres | DANY | OOP | 3 | 12-03-2009 20:49:21 |
| Funcion para borrar la cadena que aparesca repetida dentro de otra cadena | flystar | Varios | 1 | 02-07-2007 23:51:10 |
| Funcion para buscar cadena dentro de otra cadena y el numero de veces | flystar | Varios | 3 | 02-07-2007 22:48:08 |
| Buscar cadena dentro de otra cadena | doverzhoff | Varios | 4 | 27-01-2004 05:27:15 |
|