Problemas com DLL
07/03/2006
0
Estou Fazendo uma chamada dinamica a uma dll, e na hora de dar um close, no form principal, o delphi me retorna Invalid pointer operation ....., detalhe, isso ocorre apenas em design-time
estou rodando apenas essa rotina no form principal:
procedure TForm1.Button1Click(Sender: TObject);
var HD: THandle;
proc :function:string; stdcall;
mEmpresa:string;
begin
HD:= LoadLibrary(´lib.dll´);
if HD <> 0 then
begin
@proc := GetProcAddress(hd, ´Empresa´);
if @proc <> nil then
mEmpresa:=proc;
freelibrary(HD);
end;
showmessage(mEmpresa);
end;
minha DLL estah com o seguinte codigo:
library Lib;
uses
ShareMem,
SysUtils,
Dialogs,
Classes;
{$R *.res}
function Empresa:string;Stdcall;
begin
result:=´ViP Computadores´;
end;
exports
Empresa name ´Empresa´;
begin
end.
Alguem poderia me Ajudar??
Grato
ATT
Ermindo Lopes
[quote:96beba4084=´Moderação´][color=red:96beba4084]Título editado por Massuda
Removido: ´(SOCORRO)´[/color:96beba4084][/quote:96beba4084]
Ermindo
Posts
07/03/2006
Massuda
07/03/2006
Massuda
09/03/2006
Ermindo
Vc disse q quando vc usa o loadlibrary, funciona normalmente. tem como vc disponibilizar um formezinho de exemplo, chamando uma procedure de uma dll com loadlibrary .
[]´s
ATT Ermindo.
09/03/2006
Massuda
09/03/2006
Ermindo
09/03/2006
Massuda
09/03/2006
Martins
Será q o colega quis dizer q isso só acontece em tempo de projeto, quando o mesmo é rodado pelo RUN do Delphi?
Vamos esperar pela resposta dele, pois testei aqui o exemplo dele e normal aqui.
Boa sorte!!
09/03/2006
Martins
Seria o erro: [b:76652c747b][color=red:76652c747b]RunTime Error 217 at 00413E14[/color:76652c747b][/b:76652c747b]?
09/03/2006
Ermindo
depois do invalipointer, e dal o runtime error 217 oq seria?
09/03/2006
Martins
Teoricamente está relacionado a inclusão de ShareMem no form, faça um teste, inclua ShareMem em uma aplicação nova e depois clique em fechar, vai ser apresentado o mesmo erro, só não entendo pq, vou ter q pesquisar.
boa sorte
09/03/2006
Ermindo
vlw
09/03/2006
Massuda
09/03/2006
Martins
Verdade [b:7473bba496]Massuda[/b:7473bba496], acredito q o nosso colega não colocou no DPR e sim no PAS.
Valew!!!
09/03/2006
Martins
:)
Sim, o erro ocorre se vc colocar o ShareMem no seu Pas, pois ele deve ficar no arquivo Dpr ok!
Exemplo:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm)
nada de ShareMem no código acima, pois é um arquivo Pas.
program Project1; uses ShareMem, Forms, Unit1 in ´Unit1.pas´ ; {$R *.res} begin Application.Initialize;
Aqui pode usar q não tem erro algum.
Boa sorte!!!
Clique aqui para fazer login e interagir na Comunidade :)