hola
LoPiTaL
gracias por tu atencion.
aun me queda un problema
una duda sobre la variable que recibe el valor de la dll
arregle asi
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExceptionLog;
type
TDLLFunc = function(param1: PAnsiChar ; param2: PAnsiChar ; param3: PAnsiChar ; param4: PAnsiChar ): AnsiChar ;
type
TForm1 = class(TForm)
Button1: TButton;
EurekaLog1: TEurekaLog;
Edit1: TEdit;
Edit2: TEdit;
procedure FormCreate(Sender: TObject);
private
public
end;
var
Form1: TForm1;
const
DLLFunc: TDLLFunc = nil;
DLLName = 'inicio.DLL';
var
DLLHandle: THandle;
implementation
{$R *.dfm}
function suma(parametro1: PAnsiChar ; parametro2: PAnsiChar ; parametro3:PAnsiChar ; parametro4:PAnsiChar ): AnsiChar;
stdcall; far; external 'inicio.DLL';
procedure TForm1.FormCreate(Sender: TObject);
var
resultadosuma: string;
begin
DLLHandle := LoadLibrary(DLLName);
if (DLLHandle < HINSTANCE_ERROR) then
raise Exception.Create(DLLName + ' library can not be loaded or not found. ' + SysErrorMessage(GetLastError));
try
@DLLFunc := GetProcAddress(DLLHandle, 'suma');
if Assigned(DLLFunc) then
begin
resultadosuma := suma(
PansiChar(AnsiString('a1')),
PansiChar(AnsiString('b2')),
PansiChar(AnsiString('c3')),
PansiChar(AnsiString('d4'))
);
end;
finally
FreeLibrary(DLLHandle);
end;
ShowMessage( ' el resultado es '+ resultadosuma);
end;
end.
Código Delphi
[-]
var
resultadosuma: string;
begin
ShowMessage( ' el resultado es '+ resultadosuma);
end
en el show message obtengo un 3
y se supone que deberia de ser un 3333
bueno una cadena de cuatro 3
en delphi 2010 no me dejsa usar strpas
que no se puede llamar con esos argumentos
Código Delphi
[-]
var
resultadosuma: string;
begin
ShowMessage( ' el resultado es '+ StrPas(resultadosuma));
end