Ver Mensaje Individual
  #1  
Antiguo 28-03-2008
robinsongm robinsongm is offline
Miembro
 
Registrado: sep 2004
Ubicación: Madrid, España
Posts: 25
Reputación: 0
robinsongm Va por buen camino
Llamar funcion dll con una cadena...

Hola!.
Me he creado una DLL solo de funciones que devuelven strings.

y necesito una forma para poder acceder a dichas funciones si solo sé el nombre de la funcion en un string...
Me explico....

Estas son funciones ejemplo en la DLL:

Function hola_mundo: String;
Begin
result:= '*** Hola mundo ***'
End;

Function SegundaFuncion: String;
Begin
result:= 'Esta es la segunda funcion'
End;

(NO se si debería poner: Function.... :String; stdcall; ¿?)

Tengo una lista de "IDs" en string dentro de mi aplicación y cada uno es el nombre de una función, Los nombres son activamente variables claro que dentro de todos los que ya existen en la DLL.
No sé que id me enviarán, es dinamico y por tanto no puedo hacer la llamada con extern y así. Pues tendria que crearme un metodo
para cada funcion de la DLL y son cientos.... ademas que luego debería comprobar ID por ID para saber que funcion llamar....

Conociendo los IDs, desde la aplicacion he hecho (mas o menos y no estoy muy seguro de si es la forma correcta):

Funcion LeerCadena (IdCadena: String): String;
P: function: String; stdcall;
Begin
P:= GetProcAddress(HandleMiDLL,PCHar(IdCadena));
result:= P;
End;


Haciendo la llamada a LeerCadena('hola_mundo'); la misma debería responderme con: '*** Hola Mundo ***';

El Handle de mi dll lo obtengo con LoadLibrary(PathMIDLL) en procedimientos anteriores...

No se si me doy a entender bien, espero que si y que me puedan dar una manito. jajaja.

Muchas gracias majos!
__________________
Ni la utilidad del mentir es sólida, ni el mar de la verdad perjudica mucho tiempo.
Responder Con Cita