Fórum Carregar Função Dll Dinamicamente ? #255108
20/10/2004
0
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
Curtir tópico
+ 1Posts
20/10/2004
Emerson Nascimento
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
17/07/2014
Andrew Vargas
Valeu gurizada.
Gostei + 0
17/07/2014
Andrew Vargas
Valeu gurizada.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)