Estou tentando utilizar uma DLL feita em C# e quando vou executar um método específico, onde passo por parâmetro 2 objetos, tenho o seguinte erro:
Projeto Treinamento elevou classe exceção 'EOleSysError' com a mensagem:
Parâmetro incorreto.
No endereço: 10019F5DD
Imagem do erro anexada.
Erro ocorre na linha 28 do código abaixo.
procedure TfrmPrincipal.btnConsultaStatusNFeClick(Sender: TObject);
var
oConfiguracao: OleVariant;
oConsStatServ: OleVariant;
oStatusServico: OleVariant;
oExceptionInterop: OleVariant;
begin
// Criar objeto de configuração mínima
oConfiguracao := CreateOleObject('Unimake.Business.DFe.Servicos.Configuracao');
oConfiguracao.TipoDFe := 0; //0=NFe
oConfiguracao.CertificadoArquivo := 'C:\Projetos\certificados\UnimakePV.pfx';
oConfiguracao.CertificadoSenha := '12345678';
//Criar objeto do XML
oConsStatServ := CreateOleObject('Unimake.Business.DFe.Xml.NFe.ConsStatServ');
oConsStatServ.Versao := '4.00';
oConsStatServ.TpAmb := 2; //2=Homologação
oConsStatServ.CUF := 41; //41=Paraná
ShowMessage(oConsStatServ.cUF);
//Criar objeto para pegar exceção do lado do CSHARP
oExceptionInterop := CreateOleObject('Unimake.Exceptions.ThrowHelper');
try
//Consumir o serviço
oStatusServico := CreateOleObject('Unimake.Business.DFe.Servicos.NFe.StatusServico');
oStatusServico.Executar(oConsStatServ, oConfiguracao);
//XML retornado pela SEFAZ
//ShowMessage(oStatusServico.RetornoWSString);
//Código de Status e Motivo
//ShowMessage(IntToStr(oStatusServico.Result.CStat));
//ShowMessage(oStatusServico.Result.XMotivo);
except
//ShowMessage(oExceptionInterop.GetMessage());
//ShowMessage(IntToStr(oExceptionInterop.GetErrorCode()));
end;
end;
Códigos anteriores, onde crio os objetos das classes da DLL em C#, funcionam. Inclusive no ShowMessage da linha 20 consigo recuperar informações, o que me faz acreditar que a DLL está bem registrada no Windows e os objetos foram criados corretamente.
Por favor, alguém tem informação que possa ajudar na solução deste erro?