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;
}
This is a very generic error... Can provide more details?
– Andre Figueiredo
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;
forAErros = e.ToString();
to get more information about the error.– Leandro Godoy Rosa