ERRO AO LIBERAR DLL NO WIN XP, PORQUE ?
Eu preciso carregar DLLs em tempo de execução que executam as mesmas funções em todas as DLLs, mas com resultados diferentes, dependendo da DLL que eu carrego com o seguinte código:
Esta função da DLL cria um formulário com dados para informação ao usuário, que ao ser fechado é destruido. No Win 98 libera a DLL sem nenhum problema, no Win 95, Win XP e Win 2K dá um erro mas o programa não fecha.
Eu gostaria de alguma dica para resolver este problema, pois eu tive que checar qual é o sistema operacional para acabar com o erro.
Obrigado por qualquer dica,
Quadrado
type TIntFunction = procedure; stdcall; TVerFunction = function: PChar; stdcall; procedure MinhaFuncao; var HInstDLL: Integer; FPointerDLL: TFarProc; FuncDLLTex: TIntFunction; FuncDLLVer: TVerFunction; begin // Carrega DLL cNomeDLL := cDirServer+´Exec\DLL\´+cNomeDLL+´.DLL´; HInstDLL := LoadLibrary(PChar(cNomeDLL)); if HInstDLL <> 0 then begin try // Checa versão da DLL FPointerDLL := GetProcAddress( HInstDLL, PChar(´ChecaVer´)); if FPointerDLL <> nil then begin FuncDLLVer := TVerFunction( FPointerDLL ); // Checa versão da DLL e da Tabela VerOK := ChecaVersao(FuncDLLVer); end; if VerOK then begin FPointerDLL := GetProcAddress( HInstDLL, PChar(´DLLFunc´)); if FPointerDLL <> nil then begin FuncDLLTex := TIntFunction( FPointerDLL ); // DLL executa função FuncDLLTex; end else ShowMessage(´Erro na pesquisa de Função´); end else ShowMessage(´Incompatibilidade de versões´#1310+ ´entre dados e texto!´); finally // Libera DLL FuncDLLVer := nil; FuncDLLTex := nil; FPointerDLL := nil; try // checar sistema operacional if fmLogon.nCheckOS = 1 then // para Win 98 FreeLibrary(HInstDLL); // dando erro no XP E 2000 except ShowMessage(´Erro na liberação do arquivo AML!´); end; end; end; end;
Esta função da DLL cria um formulário com dados para informação ao usuário, que ao ser fechado é destruido. No Win 98 libera a DLL sem nenhum problema, no Win 95, Win XP e Win 2K dá um erro mas o programa não fecha.
Eu gostaria de alguma dica para resolver este problema, pois eu tive que checar qual é o sistema operacional para acabar com o erro.
Obrigado por qualquer dica,
Quadrado
[b:71afc13e55][color=blue:71afc13e55]Tópico bloqueado por Vinicius2K:[/color:71afc13e55][/b:71afc13e55]
[list:71afc13e55][b:71afc13e55][color=red:71afc13e55][*:71afc13e55]Título do tópico inteiramente em maiúsculas.[/color:71afc13e55][/b:71afc13e55][/list:u:71afc13e55]
Peço que leia atentamente as [url=http://forum.clubedelphi.net/viewtopic.php?t=6689]Regras de Conduta[/url] e se algum esclarecimento sobre o funcionamento do fórum ou sobre as Regras de Conduta for necessário, envie-me uma [url=http://forum.clubedelphi.net/privmsg.php?mode=post&u=2796]Mensagem Particular[/url].
Quadrado
Curtidas 0