I created a DLL with the "Register COM Interop" option in C # where some WebServices from different prefectures are consumed. I use this DLL in a Windows Form C # test application where no error occurs.
When using the DLL in a Delphi application I get the error:
Object reference not set to an instance of an object.
Has anyone ever been through this?
Follow the code below:
[ComVisible(true),
Guid("49E06C86-FC1A-418A-A12D-550797702A84"),
ClassInterface(ClassInterfaceType.None),
ComSourceInterfaces(typeof(IAbrasfV201_Events))]
public class SigISS : ISigISS_Interface
{
public void GeraNF(string AEnderecoWebService, string ACCM, string ACNPJ, string ASenha, string ACRC, string ACRC_UF,
string AAliquotaSimples, int ANumeroNotaFiscal, int ADiaEmissao, int AMesEmissao, int AAnoEmissao, string AServico,
string ASituacaoNF, double AValor, double ABase, string ADescricaoNF, int ATomadorTipo, string ATomadorCNPJ,
string ATomadorEmail, string ATomadorInscrMunicipal, string ATomadorInscrEstadual, string ATomadorRazaoSocial,
string ATomadorNomeFantasia, string ATomadorEndereco, string ATomadorNumero, string ATomadorComplemento,
string ATomadorBairro, string ATomadorCep, string ATomadorCodCidade, string ATomadorFone, string ATomadorRamal,
string ATomadorFax, string ARPSNumero, string ARPSSerie, int ARPSDia, int ARPSMes, int ARPSAno, out int AResultado,
out int ANotaGerada, out string ALinkImpressao, out string AAutenticidade, out string AErros)
{
AResultado = 0;
ANotaGerada = 0;
ALinkImpressao = string.Empty;
AAutenticidade = string.Empty;
AErros = string.Empty;
try
{
ClientWBAws.br.com.sigiss.testebauru.tcDescricaoRps DescricaoRps = new br.com.sigiss.testebauru.tcDescricaoRps();
ClientWBAws.br.com.sigiss.testebauru.tcRetornoNota RetornoNota = new br.com.sigiss.testebauru.tcRetornoNota();
ClientWBAws.br.com.sigiss.testebauru.tcEstruturaDescricaoErros EstruturaDescricaoErros = new br.com.sigiss.testebauru.tcEstruturaDescricaoErros();
ClientWBAws.br.com.sigiss.testebauru.tcEstruturaDescricaoErros[] DescricaoErros;
ClientWBAws.br.com.sigiss.testebauru.WebServiceSigISS wsClient = new br.com.sigiss.testebauru.WebServiceSigISS();
wsClient.Url = AEnderecoWebService;
DescricaoRps.ccm = ACCM;
DescricaoRps.cnpj = ACNPJ;
DescricaoRps.senha = ASenha;
if (ACRC.Trim() != "")
DescricaoRps.crc = ACRC;
if (ACRC_UF.Trim() != "")
DescricaoRps.crc_estado = ACRC_UF;
if (StrToIntDef(AAliquotaSimples, 0) > 0)
DescricaoRps.aliquota_simples = AAliquotaSimples;
DescricaoRps.servico = StrToIntDef(AServico, 0);
DescricaoRps.situacao = ASituacaoNF;
DescricaoRps.valor = string.Format("{0:N2}", AValor);
DescricaoRps.@base = string.Format("{0:N2}", ABase);
DescricaoRps.descricaoNF = ADescricaoNF;
DescricaoRps.tomador_tipo = ATomadorTipo;
DescricaoRps.tomador_cnpj = ATomadorCNPJ;
DescricaoRps.tomador_email = ATomadorEmail;
DescricaoRps.tomador_ie = ATomadorInscrEstadual;
DescricaoRps.tomador_im = ATomadorInscrMunicipal;
DescricaoRps.tomador_razao = ATomadorRazaoSocial;
DescricaoRps.tomador_fantasia = ATomadorNomeFantasia;
DescricaoRps.tomador_endereco = ATomadorEndereco;
DescricaoRps.tomador_numero = ATomadorNumero;
DescricaoRps.tomador_complemento = ATomadorComplemento;
DescricaoRps.tomador_bairro = ATomadorBairro;
DescricaoRps.tomador_CEP = ATomadorCep;
DescricaoRps.tomador_cod_cidade = ATomadorCodCidade;
DescricaoRps.tomador_fone = ATomadorFone;
DescricaoRps.tomador_ramal = ATomadorRamal;
DescricaoRps.tomador_fax = ATomadorFax;
DescricaoRps.rps_num = ANumeroNotaFiscal;
DescricaoRps.rps_serie = ARPSSerie;
DescricaoRps.rps_dia = ARPSDia;
DescricaoRps.rps_mes = ARPSMes;
DescricaoRps.rps_ano = ARPSAno;
DescricaoRps.dia_emissao = ARPSDia;
DescricaoRps.mes_emissao = ARPSMes;
DescricaoRps.ano_emissao = ARPSAno;
RetornoNota = wsClient.GerarNota(DescricaoRps, out DescricaoErros);
AResultado = RetornoNota.Resultado;
ANotaGerada = RetornoNota.Nota;
ALinkImpressao = RetornoNota.LinkImpressao;
AAutenticidade = RetornoNota.autenticidade;
AErros = RetornaErros(DescricaoErros);
}
catch (Exception e)
{
AErros = e.Message;
}
}
private static int StrToIntDef(string valor, int @Default)
{
int numero;
if (int.TryParse(valor, out numero))
return numero;
return @Default;
}
private string RetornaErros(br.com.sigiss.testebauru.tcEstruturaDescricaoErros[] DescricaoErro)
{
string Retorno = string.Empty;
for (int i = 0; i <= (DescricaoErro.Length -1); i++)
{
Retorno = "Identificador SIGISS " + DescricaoErro[i].id.ToString() +"\r\n";
Retorno += "Processo " + DescricaoErro[i].DescricaoProcesso + "\r\n";
Retorno += "Erro " + DescricaoErro[i].DescricaoErro + "\r\n";
}
return Retorno;
}