Fórum Carregar Função Dll Dinamicamente ? #255108

20/10/2004

0

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

Responder

Posts

20/10/2004

Emerson Nascimento

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;


Responder

Gostei + 0

17/07/2014

Andrew Vargas

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.
Responder

Gostei + 0

17/07/2014

Andrew Vargas

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.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar