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 26-08-2008
alugotrujillo alugotrujillo is offline
Registrado
 
Registrado: ago 2008
Posts: 1
Poder: 0
alugotrujillo Va por buen camino
Uso de DLL

Estoy trabajando con DLL, hasta ahora lo he hecho por medio del metodo "facil"
procedure MostrarDatosEstrato(BaseDatos: String; Rodal: Integer); stdcall;external 'estrato.dll';
Pero ahora quiero pasar el metodo que usa windows con sus dll, me han dicho eso, mediante esta via

Código Delphi [-]
procedure MostrarNomenclador(BD: String; QueNomenclador{, Selecc}: Integer; Modificar: Boolean);
  type
    TNomenclador = function(BaseDatos: String; QueTabla{, Busqueda}: Integer; PermModif: Boolean): String;
  var
    Nomenclador: TNomenclador;
    DLLInstance: THandle;
  begin
    if (BD = '') OR (not FileExists(BD))
    then  MessageDlg('Debe establecer una base de datos', mtError, [mbOK], 0)
    else
    begin
      CoInitialize(NIL);
      DLLInstance:= LoadLibrary('nomencladores.dll');
      if DLLInstance = 0 then
      begin
        MessageDlg('No se ha encontrado la DLL "nomencladores.dll"', mtError, [mbOK], 0);
        Exit;
      end;
      @Nomenclador:= GetProcAddress(DLLInstance,'MostrarNomenclador');
      if @Nomenclador <> nil
      then Nomenclador(BD,QueNomenclador,{Selecc,}Modificar)
      else MessageDlg('Función no encontrada "MostrarNomenclador"', mtError, [mbOK], 0);
      FreeLibrary(DLLInstance);
    end;
  end;
funciona muy bien cuando es un procedimineto, pero como puedo modificarlo para cuando en la DLL se encuentra una funcion y necesito saber el resultado

Última edición por roman fecha: 26-08-2008 a las 19:40:09. Razón: Agregar etiqueta [delphi] para mayor legibilidad
Responder Con Cita
  #2  
Antiguo 26-08-2008
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
Hola, bienvenido al Club.

He agregado las etiquetas [delphi] a tu mensaje para que el código quede más presentable. Te recomiendo que entres a Editar el mensaje (botón en la parte derecha inferior del mensaje) para que veas cómo se usan las etiquetas.

En cuanto a tu pregunta, creo, en principio, que no deberías tener problema para acceder al valor de la función como a cualquier otra, excepto porque los tipo de datos que usas; en lugar de string sería más conveniente que usaras pchar.

// Saludos
Responder Con Cita
  #3  
Antiguo 27-08-2008
Avatar de droguerman
droguerman droguerman is offline
Miembro
 
Registrado: abr 2005
Ubicación: tierra
Posts: 999
Poder: 20
droguerman Va por buen camino
Puedes habilitar la depuración en la DLL para ello activa en las opciones del proyecto Remote Debug Symbols y haz correr la Dll con un ejecutable vía el menú Run -> Parameters del IDE de delphi
__________________
self.free;
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 17:14:58.


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