Fórum SafeCall em DLL #244841
28/07/2004
0
Estou com o problema quando rodo uma DLL. Para começar não está funcionando o Debug da rotina, e não me venham falar que é só configurar o Host Application.
Mas meu problema é outro. Qualquer erro da DLL é mostrada como Access Violation, não o erro real.
No exemplo abaixo, O sistema mostra a primeira mensagem, não mostra o erro de divisão por zero, e mostra o erro dentro da função TrocaBanco, mas nenhum deles retorna o erro real, apenas Access Violation.
[color=blue:c6aed9c2c9]function ImportarArquivo(FilePath: string; var PgrImportacao: TProgressBar; BancoReal: boolean = true): boolean; safecall; stdcall;
var x:double;
begin
try
ShowMessage(´Entrou na função´);
x := 12/0;
TrocaBanco(BancoReal);
// Result := DmImp.ImportarArquivo_Interno(FilePath, PgrImportacao, lblStatus, bCancel, ShowError);
Result := false;
ShowMessage(´Saindo da função´);
except
on e:exception do
ShowMessage(e.Message);
end;
end;[/color:c6aed9c2c9]
Aceito qualquer tipo de ajuda.
Grato,
Rodrigo Cesar dos Santos
Rodc
Curtir tópico
+ 0Posts
28/07/2004
Beppe
Gostei + 0
28/07/2004
Rodc
Fiz mais alguns testes e percebi o seguinte:
Tenho a unit principal da DLL que chama a Função TrocaBanco que está na unit Geral.
Dentro da unit Geral eu perciso acessar componentes de acesso a banco que está em um Data Module (DmData).
Ex.: DmData.Tabela.DataSet......
Mas acho que o Data Module não está sendo criado quando leio a DLL.
Alguém sabe me dizer se tem que fazer algum comando para criar o Data Module?
Grato,
Rodrigo Cesar
Gostei + 0
28/07/2004
Beppe
PS: Mas faça o lance da ShareMem de qualquer maneira.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)