Carregar Função Dll Dinamicamente ?

Delphi

20/10/2004

Pessoal tem a seguinte função em uma Dll
function ShowMapaTanques(Mapa :ShortString):String ;Stdcall ;
begin
if FrMapaTanques =nil Then
FrMapaTanques :=TFrMapaTanques.Create(nil);
FrMapaTanques.ShowModal ;
end;

Exports ShowMapaTanques ;
begin
end.

Fiz da Seguinte forma

Type
TTipoFuncao = function (Mapa : ShortString): String ;StdCall ;
Const
NomeDll =´ModuloPosto.Dll´ ;
implementation
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
Var
Dll :THandle ;
funcao: TTipoFuncao;
begin
Dll := LoadLibrary(NomeDll);
funcao := GetProcAddress(Dll,´ShowMapaTanques´);
FreeLibrary(Dll) ;
+ Não Carregar não faz Nada o que será que está faltando.

Obrigado a Tds !!


Essistemas

Essistemas

Curtidas 1

Respostas

Emerson Nascimento

Emerson Nascimento

20/10/2004

tente assim:


type
    {Definições do seu formulário}
    private
        {private declarations}
    public
        {public declarations}
    end;

function ShowMapaTanques(Mapa: ShortString):String; StdCall; external ´ModuloPosto.Dll´;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var Retorno: shortstring;
begin
    Retorno := ShowMapaTanques( ParâmetroDesejado );
end;

acho essa maneira mais simples.

de qualquer forma, a sua rotina não funcionava pois você simplesmente ´pegava´ a função mas não a executava. pra resolver, mantendo aquele mesmo código, tente:

procedure TForm1.Button1Click(Sender: TObject);
var
    Dll :THandle ;
    funcao: TTipoFuncao;
    Retorno: shortstring;
begin
    Dll := LoadLibrary(NomeDll);
    if DLL = 0 then
        MostraMsgErro
    else
    begin
        @funcao := GetProcAddress(Dll,´ShowMapaTanques´);
        if @funcao nil then
            retorno := funcao( ParâmetroDesejado );
        FreeLibrary(Dll);
    end;
end;


GOSTEI 0
Andrew Vargas

Andrew Vargas

20/10/2004

Se alguém souber, por favor me ajude, pois eu também estou perdido com o uso de dll, caso puderem me dar uma dica, fica aqui o link da minha pergunta, que é um tanto similar à essa minha pergunta
Valeu gurizada.
GOSTEI 0
Andrew Vargas

Andrew Vargas

20/10/2004

Se alguém souber, por favor me ajude, pois eu também estou perdido com o uso de dll, caso puderem me dar uma dica, fica aqui o link da minha pergunta, que é um tanto similar à essa minha pergunta
Valeu gurizada.
GOSTEI 0
POSTAR