Ver Mensaje Individual
  #9  
Antiguo 30-01-2006
piccolo2101 piccolo2101 is offline
Miembro
 
Registrado: oct 2005
Posts: 63
Reputación: 19
piccolo2101 Va por buen camino
Bueno,
intentando, quizás, acercarme más un poco a la solución que buscas de sSelect+sStatus, voy a explicarte un método que se me ha ocurrido:
Evidentemente un puntero a una función no es más que una dirección de memoria así que sSelect podría ser una dirección de memoria que inicialmente señalase a la función Select_A. Tambíen puedes haces que al iniciar tu aplicación se calculen las diferencias entre Select_A y el resto para saber que desplazamiento debes aplicar respecto a la dirección de memoria de Select_A y esos serán los valores de sStatus. Por ejemplo
Usaré valores enteros para explicarme mejor.
Select_A ----- dirección 100
Select_B ----- dirección 150
Select_C ----- dirección 75

sSelect = 100;
posibles valores de sStatus = 0 (si es Select_A), 50 (si es Select_B), -25 (si es Select_C).

Con esto, es posibles hacer en un momento dado una llamada a la función que quieras con sSelect+sStatus.

Respecto a lo de lenguaje compilado e interpretado discreparé un poquito, siempre desde mi ignorancia, porque lenguajes relativamente interpretados como java o perl requieren de una fase de precompilación para generar el código interpretado y en éste también se han traducido los nombres de funciones y demás por direcciones. Sé que perl tiene una función que permite hacer lo que quieres llamada eval si mal no recuerdo y es posible que realice un cálculo relativo de la posición de memoria de dicha función.

PD: Te recomiendo que calcules los desplazamientos de las funciones respecto a una base (en este caso Select_A) porque una vez los tengas ya puedes cambiar tu código y hacerlo constante ya que la distancia debería ser siempre la misma salvo que modifiques código.

Un saludo y gracias.

Última edición por piccolo2101 fecha: 30-01-2006 a las 09:47:11.
Responder Con Cita