Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-08-2004
Avatar de vic_ia
vic_ia vic_ia is offline
Miembro
 
Registrado: ene 2004
Posts: 238
Poder: 21
vic_ia Va por buen camino
sobrecargar funciones en DLL ?

buen dia a todos los del foro...

he creado una DLL la cual exporta dos funciones, las cuales en general realizan el mismo tipo de calculo y regresan resultados similares, la diferencia basica de estas en el número y tipo de parametros que les paso; en un procedimiento dependiendo de una condición cargo una u otra, para esto tengo definidas dos variables funcion con el "prototipo" de cada una y cargo la requerida en la variable adecuada, todo funciona muy bien; mi pregunta es : asi como cuando dentro de una unidad se puede sobrecargar una función y el compilador llama a la función que corresponda de acuerdo al numero y tipo de parametros con que se llama la función, ¿hay alguna forma de hacerlo con las funciones que menciono, y no tener dos variables diferentes para los tipos ?

de antemano gracias....

saludos....
Responder Con Cita
  #2  
Antiguo 24-08-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pues no sé, ¿por qué no lo intentas? Si ha de funcionar se me ocurriría algo como:

Código Delphi [-]
function MiFuncion(parámetros): Integer; external 'midll.dll'; name 'MiFuncion1'; overload; 
function MiFuncion(otros parámetros): Integer; external 'midll.dll'; name 'MiFuncion2'; overload;

// Saludos
Responder Con Cita
  #3  
Antiguo 24-08-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Ya te tengo un ejemplo

En el dll:

Código Delphi [-]
function Suma(A, B: Integer): Integer; overload;
begin
  Result := A + B;
end;

function Suma(A, B, C: Integer): Integer; overload;
begin
  Result := A + B + C;
end;

exports
  // debes especificar los parámetros cuando exportas rutinas sobrecargadas
  Suma(A, B: Integer) name 'Suma1',
  Suma(A, B, C: Integer) name 'Suma2';

En la unidad que use la dll:

Código Delphi [-]
function Suma(A, B: Integer): Integer; external 'midll.dll' name 'Suma1'; overload;
function Suma(A, B, C: Integer): Integer; external 'midll.dll' name 'Suma2'; overload;

Intenté exportar las funciones sin cambiarles de nombre pero aunque compilaba bien los resultados no eran los esperados (la primera función devolvía basura).

Pero de esta forma puedes usar las rutinas sobrecargadas tanto en la misma dll como fuera de ella usando el mismo nombre.

// Saludos
Responder Con Cita
  #4  
Antiguo 24-08-2004
Avatar de vic_ia
vic_ia vic_ia is offline
Miembro
 
Registrado: ene 2004
Posts: 238
Poder: 21
vic_ia Va por buen camino
hola roman....

muchas gracias.... lo probare.....

saludos....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 08:37:24.


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
Copyright 1996-2007 Club Delphi