Tema: Fallo en dll
Ver Mensaje Individual
  #1  
Antiguo 26-01-2007
mierda mierda is offline
Miembro
 
Registrado: may 2006
Posts: 129
Reputación: 19
mierda Va por buen camino
Fallo en dll

Hola, tengo un fallo ... el caso es que no lo veo ... a ver si desde su perspectiva me lo encuentran ....

Una dll

Código Delphi [-]
library FormDLL;
uses
  sharemem,SysUtils,
  Classes,dialogs,
  UfrmPrincipal in 'UfrmPrincipal.pas' {frmPrincipal};
{$R *.res}
// Para mostrar el formulario "frmPrincipal".
//
function MostrarFormulario : boolean; stdcall;
begin
  Result := true;
  frmPrincipal := TfrmPrincipal.Create(nil);
  try
    frmPrincipal.ShowModal;
  finally
    frmPrincipal.Free;
  end;
end;
function suma(x,y:integer):integer;stdcall;
begin
  suma := x+y;
end;
function muestrasaludo:boolean;stdcall;
begin
 Result := true;
 showmessage('Hola');
end;
exports
  MostrarFormulario,suma,muestrasaludo; // Exportamos la función.
end.

y un exe que la llama

Código Delphi [-]
unit UfrmPrueba;
interface
uses
  sharemem,Windows, Forms, Classes, Controls, StdCtrls,dialogs,sysutils;
type
  TfrmPrueba = class(TForm)
    btnFormulario: TButton;
    Button1: TButton;
    Button2: TButton;
    procedure btnFormularioClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  end;
var
  frmPrueba: TfrmPrueba;
// Declaración de la función sita en la "DLL"
function MostrarFormulario : boolean; external 'FormDLL.dll' name 'MostrarFormulario';
function suma(x,y:integer): integer;external 'FormDLL.dll'  name 'suma';
function muestrasaludo:boolean;external 'FormDLL.dll' name 'muestrasaludo';
implementation
{$R *.dfm}
procedure TfrmPrueba.btnFormularioClick(Sender: TObject);
begin
  MostrarFormulario; // Usamos la función externa
end;
procedure TfrmPrueba.Button1Click(Sender: TObject);
var
resultado: integer;
begin
resultado := suma(3,4);
showmessage (inttostr(resultado));
end;
procedure TfrmPrueba.Button2Click(Sender: TObject);
begin
muestrasaludo;
end;
end.

la unica funcion que no me funciona es la de la suma ... la mas facil

Gracias por adelantado
Responder Con Cita