![]() |
Ejecutar Valor de una variable
Hola a tod@s,
No se si lo que voy a plantear es un disparate como una catedral, pero bueno por probar. Tengo recogida en una variable el nombre de un procedimiento y me gustaría saber si es posible ejecutar el valor de esa variable de manera que pasará a lanzarse el procedimiento en cuestión Me he conseguido explicar? Un saludo y muchas gracias. |
Hola,
a mi no se me ocurre que puedas hacerlo cogiendo el nombre del procedimiento y ejecutándolo. Sólo se me ocurre que hagas un "case" (en tu caso no valdría ya que en la variable guardas un string) o ir haciendo If's para los valores que pueda tomar esa variable y según el que tome ejecutar un procedimiento Ej: con integer;
Ej. con string
Espero te sirva o alguien encuentre mejor solución para lo que buscas. Saludos |
Hola,
No sé si te refieres a algo así:
|
Si el procedimiento es published y pertenece a una clase puedes hacerlo utilizando RTTI.
Si es eso lo que te interesa dilo o haz una búsqueda en los foros y te aclaramos un poco más. |
Ya puestos a hacer cosas "exoticas" ¿que os parece esto?
No es que tenga mucha utilidad, pero resulta curioso :) |
Antes de nada agradeceros el interés mostrado.
Os voy a detallar un poco más el programilla que tengo para situaros mejor. Tengo dos procedimientos declarados en una unidad Unit1 cuya utilidad única y exclusiva es recoger todas la funciones y procedimientos que son susceptibles de ser utilizados desde distintos formularios, por lo tanto estos procedimientos son "públicos". Por otro lado, y desde el formulario Form1 por ejem. tengo una variable que puede recoger el valor de uno de esos procedimientos, por ejem: Código:
s_cadena := 'procedimiento_inicio'; |
Eso desestima RTTI; La opción de Seoane de una lista de apuntadores a funciones creo que puede ser la más útil si el número de funciones va a ir creciendo. Si van a ser siempre 2 utiliza un if/case.
|
Vamos a ver, podemos implementar el método que te comente antes en una unit, y solamente hacer publico el procedimiento EjecutarPorNombre. Algo así:
Para llamar a un procedimiento, lo haríamos de la siguiente manera:
Espero que te sirva |
Ok, gracias a ambos.
Voy a probar y ahora os comento. |
La franja horaria es GMT +2. Ahora son las 20:28:42. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi