Ir para conteúdo
  • Cadastre-se

dev botao

Erro ao carregar o Logotipo do DACT-e de um stream - Trunk2


joedbat
  • Este tópico foi criado há 2555 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

O carregamento do logotipo do DACT-e (FastReport 5.x) funcionava de maneira correta, ao carregar de um stream, utilizando o código abaixo:

    imgFR := TLogotipoFR.Create(DadosFilho.qryJoker);
    stLogo := TStringStream.Create;
    imgFR.SetEmpresa(FPrincipal.iIDEmpresa);
    imgFR.Load(stLogo);
    imgFR.Free;
    CTe.DACTe.Logo := stLogo.DataString;
    stLogo.Free;
 

Após a migração para o Trunk2, ao exibir um DACT-e, ocorre um acess violation. Isolando o trecho de código acima (deixando o logo em branco), o DACT-e é exibido corretamente.

Att.

Link para o comentário
Compartilhar em outros sites

Bom Dia, Juliomar

  Na verdade, este é o trecho de código que utilizo para carregar o logotipo do banco de dados. Ele está correto, pois funcionava perfeitamente no trunk1 do acbr. E o mesmo trecho é utilizado para carregar o logotipo na geração do DANF-e, no Trunk2.

  Apenas no DACT-e, do trunk2, é que o erro ocorre.

 

Att

Editado por joedbat
Acrescentar informações.
Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois ...
  • Moderadores

Ao efetuar a migração para o trunk2 também pegou o fr3 novos e pegou a versão do fast report 5?

senão estiver com isso vai dar mesmo problema

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

Bom dia,

  Sim, eu atualizei os arquivos .FR3. A versão que estou utilizando do FastReport é a 5.3.5

  Ainda assim o erro persiste. O código é o mesmo que utilizo pra a geração da NF-e, que funciona a contento.

 Se tento passar apenas um arquivo como parâmetro, também funciona.

 Só está ocorrendo erro ao tentar carregar o logotipo de um Stream.

 Na versão anterior do ACBr, funcionava. Inclusive, eu é que submeti os arquivos com a sugestão de mudança para utilizar o logotipo a partir de um stream, conforme descrito no tópico:

Esta necessidade surgiu, porque o sistema é multi-empresa, com várias empresas acessando simultaneamente. Portanto, a carga do logotipo via stream, é a alternativa mais adequada para imprimir diferentes logotipos.

 

Agradeço pela atenção dispensada.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Boa noite!

voltei a conferir o código e os dois correspondem!

se isso funciona na nf-e e no ct-e não  a única coisa que posso indagar é o arquivo stream está errado!

veja:

DANFe
    // Carregamento da imagem
    if NaoEstaVazio(DANFEClassOwner.Logo) then
    begin
      FieldByName('Imagem').AsString := DANFEClassOwner.Logo;
      vStream := TMemoryStream.Create;
      try
        if FileExists(DANFEClassOwner.Logo) then
          vStream.LoadFromFile(DANFEClassOwner.Logo)
        else
        begin
          vStringStream:= TStringStream.Create(DANFEClassOwner.Logo);
          try
            vStream.LoadFromStream(vStringStream);
          finally
            vStringStream.Free;
          end;
        end;
        vStream.Position := 0;
        TBlobField(cdsParametros.FieldByName('LogoCarregado')).LoadFromStream(vStream);
      finally
        vStream.Free;
      end;
    end;

DACTe
    // Carregamento da imagem
    if DACTEClassOwner.Logo <> '' then
    begin
      FieldByName('Imagem').AsString := DACTEClassOwner.Logo;
      vStream                        := TMemoryStream.Create;
      try
        if FileExists(DACTEClassOwner.Logo) then
          vStream.LoadFromFile(DACTEClassOwner.Logo)
        else
        begin
          vStringStream := TStringStream.Create(DACTEClassOwner.Logo);
          try
            vStream.LoadFromStream(vStringStream);
          finally
            vStringStream.Free;
          end;
        end;
        vStream.Position := 0;
        TBlobField(cdsParametros.FieldByName('LogoCarregado')).LoadFromStream(vStream);
      finally
        vStream.Free;
      end;
    end;

 

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

Boa tarde,

  É realmente estranho. Eu já havia conferido o código e os dois batiam. Até tentei salvar novamente arquivo .fr3, achando que poderia estar corrompido.

  Apenas para testar, eu fiz o seguinte. Ao invés de carregar o stream do Banco, eu simplesmente carreguei o BMP direto do arquivo. Não funcionou, continua dando o mesmo erro. Se eu indico direto mesmo arquivo, funciona.

Seguem abaixo os dois trechos de código:

Não funciona: 

    stLogo := TStringStream.Create;
    stLogo.LoadFromFile('C:\CTe\Logo.Bmp');
    CTe.DACTe.Logo := stLogo.DataString;
    stLogo.Free;
 

Funciona:

    CTe.DACTe.Logo := 'C:\CTe\Logo.bmp';
 

Link para o comentário
Compartilhar em outros sites

  • Moderadores
Em 29/02/2016 at 15:43, joedbat disse:

Boa tarde,

  É realmente estranho. Eu já havia conferido o código e os dois batiam. Até tentei salvar novamente arquivo .fr3, achando que poderia estar corrompido.

  Apenas para testar, eu fiz o seguinte. Ao invés de carregar o stream do Banco, eu simplesmente carreguei o BMP direto do arquivo. Não funcionou, continua dando o mesmo erro. Se eu indico direto mesmo arquivo, funciona.

Seguem abaixo os dois trechos de código:

Não funciona: 

    stLogo := TStringStream.Create;
    stLogo.LoadFromFile('C:\CTe\Logo.Bmp');
    CTe.DACTe.Logo := stLogo.DataString;
    stLogo.Free;
 

Funciona:

    CTe.DACTe.Logo := 'C:\CTe\Logo.bmp';
 

Por favor queira testar pois subi modificações ao svn!

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...

Boa tarde pessoal,

  - Utilizo Delphi 7 com a versão do Fast Report 5.0. 

  - Também estou com o mesmo problema, não consigo carregar o logotipo que esta salvo em meu banco de dados em um campo do tipo Blob. Segue rotina abaixo:

  //Abaixo rotina em meu programa para alimentar o Logo:

  vLogo := TStringStream.Create('');
  try
    vLogo.WriteString(dm_VariaveisCte.qryManutencaoLOGO.AsString); //Campo Blob onde esta salvo meu logotipo!
    CTeDACTe.Logo := vLogo.DataString;
  finally
    FreeAndNil(vLogo);
  end;

    //Abaixo unit ACBrCTeDACTEFR, rotina que carrega o logotipo.
    if DACTEClassOwner.Logo <> '' then
    begin
      FieldByName('Imagem').AsString := DACTEClassOwner.Logo;
      vStream                        := TMemoryStream.Create;
      try
        if FileExists(DACTEClassOwner.Logo) then
          vStream.LoadFromFile(DACTEClassOwner.Logo)
        else
        begin
          vStringStream := TStringStream.Create(DACTEClassOwner.Logo);
          try
            vStream.LoadFromStream(vStringStream);
          finally
            vStringStream.Free;
          end;
        end;
        vStream.Position := 0;
        TBlobField(cdsParametros.FieldByName('LogoCarregado')).LoadFromStream(vStream);
      finally
        vStream.Free;
      end;
    end;  

OBS: Passa pela rotina acima sem erros alimentando com os dados do campo blob aparentemente perfeitamente, porém ao visualizar ocorre "access violation".

Caso passe um caminho, exemplo: "C:\Logotipo\Logo.jpg", funciona! Alguém teria uma luz? Meus fontes estão atualizados!

  

 

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2555 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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.