Undefined object reference for an object instance

Asked

Viewed 4,824 times

3

I created a DLL with the option "Register COM Interop" 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.

Using the DLL in a Delphi application gives me the Error:

Undefined object reference for an object instance.

Someone’s been through it?

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;
    }
  • 2

    This is a very generic error... Can provide more details?

  • Is there an error or is this error message returned by the Aerros parameter? If returned by this parameter change the line that assigns it to AErros = e.Message; for AErros = e.ToString(); to get more information about the error.

1 answer

1

I created a dll that signs the xml before transmitting the batches of rps to the city, the company uses by Delphi also, besides the option "Register for COM Interop" be checked, access the file Assemblyinfo.Cs and checks this line, have to leave as true.

[assembly: ComVisible(true)]

Detail: This object reference error occurs when trying to access an object/property that does not exist.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.