Ir para conteúdo
  • Cadastre-se

dev botao

ACESS VIOLATION ERRO Certificado atributo FInformacao


Ver Solução Respondido por Junior Salzano,
  • Este tópico foi criado há 2313 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Fala galera..

Bom dia...

 

Estou utilizando a rotina do webservice ACBrNFSe

 

Seguinte.... Na unit de configurações eu tenho essa clase:

  TCertificados = class(TComponent)
  private
    FSenhaCert  : AnsiString;
    FNumeroSerie: AnsiString;
    FDataVenc   : TDateTime;
    FInformacao : AnsiString;
    FCNPJ       : String;

    function GetNumeroSerie : AnsiString;
    function GetDataVenc    : TDateTime;
    function GetInformacao  : AnsiString;
    function GetCNPJ        : String;
    procedure SetNumeroSerie(const Value: AnsiString);
  public
    function SelecionarCertificado : AnsiString;
    function GetCertificado        : ICertificate2;
  published
    property NumeroSerie: AnsiString  read GetNumeroSerie write SetNumeroSerie;
    property Senha      : AnsiString  read FSenhaCert     write FSenhaCert;
    property DataVenc   : TDateTime   read GetDataVenc;
    property Informacao : AnsiString  read GetInformacao;
    property CNPJ       : String      read GetCNPJ;
  end;

 

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

No meu método SelecionarCertificado
 

function TCertificados.SelecionarCertificado: AnsiString;
var
  Store  : IStore3;
  Certs  : ICertificates2;
  Certs2 : ICertificates2;
  Cert   : ICertificate2;
begin
  Store := CoStore.Create;
  Store.Open(CAPICOM_CURRENT_USER_STORE, CAPICOM_STORE_NAME, CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);

  Certs  := Store.Certificates as ICertificates2;
  Certs2 := Certs.Select('Certificado(s) Digital(is) disponível(is)', 'Selecione o Certificado Digital para uso no aplicativo', false);

  if not(Certs2.Count = 0) then begin
    Cert          := IInterface(Certs2.Item[1]) as ICertificate2;
    FNumeroSerie  := Cert.SerialNumber;
    FDataVenc     := Cert.ValidToDate;
    FInformacao   := Cert.SubjectName;
  end;

  Result := NumeroSerie;
end;

 

Quando ele vai passar informação para o atributo FInformacao da um ACESS VIOLATION!!!

CARA já fiz de tudo e não consigo entender o porque esta dando esse erro, apenas nesse atributo.

 

Se eu declarar essa variavel no inicio da fucntion ele atribui a informação normalmente.

 

O problema esta ao atribuir qualquer informação para esse atributo da classe FInformação;

Já criei tb um metodo de escrita um SetInformacao, porem mesmo assim ocorre o mesmo errro.

Já fiz de tudo, alguem tem alguma ideia que possa me ajudar ?

 


Valeu galera !


Abraço!

 

Link para o comentário
Compartilhar em outros sites

  • Consultores
8 minutos atrás, Junior Salzano disse:

Não teria alguma ideia do que pode ser esse erro ?

Access violation é um erro muito genérico. Ele acontece quando você está acessando alguma parte da memória que não está mais disponível. Exemplo quando você tenta acessar um objeto que não foi criado ou já foi destruído.

Também pode acontecer quando você faz um cast para um tipo que é apenas parcialmente compatível e tenta acessar a parte incompatível (exemplo uma propriedade que não existe).

Então é muito difícil saber o que está acontecendo sem um exemplo que possa ser reproduzido.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

Opa..


Valeu EMBarbosa pelas informações.

 

Então... na verdade eu tenho esse conhecimento de como acontece um ACESS VIOLATION..

Porem aparentemente, esta tudo correto.

Tanto é que os outros atributos da classe estão criado da mesma forma e todos funcionam normalmente,

 

O problema esta apenas nesse FInformacao.

Realmente me parece que no momento em que o compilador vai acessar esse atributo ele não existe, pq se eu declarar como uma variável no inicio da function, funciona normalmente. Ta um mistério bastante complicado para se achar a solução,

 

Estou nele a uns 3 dias.

 

Ta tenso... ¬¬

 

Link para o comentário
Compartilhar em outros sites

  • Solution

Bom dia Galera!!!

 

Galera obrigado ae pelas informações tempo gasto para responder as minhas duvidas;

Eu consegui solucionar o problema, era um erro amador! hehe..

Na chamada da função eu não estava estanciando o objeto, (erro amador), engraçado é que funcionava alguns atributos da classe, acabou desviando minha atenção para a classe e não para a chamada.

Mais deu tudo certo, obrigado pela atenção de todos!

 

Abraço !

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2313 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.