Ir para conteúdo
  • Cadastre-se

dev botao

Remoção de Hints e Warning do ACBr


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

Recommended Posts

  • Moderadores

Tenho que concordar com ambos, mas deixar como está é que não pode!

Qual a possibilidade de remoção disso?

O que ambos sugerem que seja feito?

Se fosse tão maléfico assim não seria usado nos fontes do principal framework usado pelo ACBr.

Será que eles são tão inconsequentes assim?

Erro é deixar como está e não ver os verdadeiro warnings prejudicais ao projeto e aos aplicativos dos usuários.

 

Link para o comentário
Compartilhar em outros sites

  • Consultores
4 minutos atrás, Waldir Paim disse:

O que ambos sugerem que seja feito?

Analisar o código onde o warning é levantado e fazer o tratamento necessário.

4 minutos atrás, Waldir Paim disse:

Erro é deixar como está e não ver os verdadeiro warnings prejudicais ao projeto e aos aplicativos dos usuários.

Você dizer que esses warnings não são prejudiciais acabou de confirmar pra mim que não entende exatamente o problema em desligá-los dessa maneira.

Se qualquer pessoa quiser desligar no projeto próprio, no código que tem do ACBr, ou etc... fique a vontade. Você vai poder procurar os outros warnings e daí nos enviar correções. Acredite, vamos ficar feliz com isso, como em toda contribuição que você já tem feito.

Mas eu não posso concordar que esse código que desliga warnings globalmente, inclusive warnings sobre diretiva deprecated seja enviado ao repositório.

  • Curtir 1

[]'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

  • Moderadores

Segue algumas units da past ACBrTEFD com remoção dos warnings.

Fiz um ajuste que requer uma atenção especial na unit ACBrTEFDCliDTEF

       while not Parar do
        begin
           if ItemSelecionado = 30 then
           begin
            Result   := -1; //verificar isso aqui.
            Exit;
           end;

 

ACBrTEFDClass.pas

ACBrTEFDCliSiTef.pas

ACBrTEFDCliDTEF.pas

ACBrTEFDTicketCar.pas

Segue algumas units da past ACBrSerial com remoção dos warnings.

Fiz um ajuste que requer uma atenção especial na classe TACBrPosPrinter

 TACBrPosPrinter = class(TACBrComponent)
 private
 ...
 protected
  FPosPrinterClass: TACBrPosPrinterClass; mudei para protected (acredito não causar problemas)
 ...
 end;

 

ACBrECFClass.pas

ACBrECFEscECF.pas

ACBrDISGertecTEC65lib.pas

ACBrPosPrinter.pas

Segue algumas units da past ACBrOpenSSL com remoção dos warnings.

ACBrEAD.pas

Segue algumas units da past ACBrComum com remoção dos warnings.

ACBrAAC.pas

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Fundadores

 

 

Em 03/08/2016 at 21:15, Waldir Paim disse:

Fiz um ajuste que requer uma atenção especial na classe TACBrPosPrinter


 TACBrPosPrinter = class(TACBrComponent)
 private
 ...
 protected
  FPosPrinterClass: TACBrPosPrinterClass; mudei para protected (acredito não causar problemas)
 ...
 end;

 

Porque você precisa dessa variável como Protected ?

Isso está causando algum Warning  ?

Qual a necessidade, da modificação abaixo ?

  {$M+}
  TACBrPosRazaoColunaFonte = class

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Moderadores

@Daniel Simoes

 

Citar

Qual a necessidade, da modificação abaixo ?


  {$M+}
  TACBrPosRazaoColunaFonte = class

A falta dela gera esse aviso : 

Citar

[dcc32 Warning] ACBrPosPrinter.pas(137): W1055 PUBLISHED caused RTTI ($M+) to be added to type 'TACBrPosRazaoColunaFonte'

Citar

Porque você precisa dessa variável como Protected ?

Isso está causando algum Warning  ?

Essa alteração para protected não está gerando nenhum aviso.

Apenas permite acessar esse recurso via class helper

Citar

type
  TPosPrinter = class helper for TACBrPosPrinter
  private
    function GetPosPrinterClass: TACBrPosPrinterClass;
  public
    property Printer: TACBrPosPrinterClass read GetPosPrinterClass;
  end;

Com isso consigo acessar o recurso do componente, mas só adicione se julgar valido.

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

@Daniel Simoes

Na unti ACBrEAD.pas você não removeu 1078, nela temos esse valor:

Citar

  BytesToRead := 0;

Verifiquei e ele só é utilizado dentro do loop abaixo:

Citar

   while (PosStream < StreamSize) do
    begin
       BytesToEnd := (StreamSize - PosStream);

       if BytesToEnd > BufferSize then
          BytesToRead := BufferSize
       else if BytesToEnd <= 0 then
          Break
       else
          BytesToRead := BytesToEnd;

       BytesReaded := AStream.Read(Memory^,BytesToRead);
       if BytesReaded <= 0 then
          Break;

       EVP_DigestUpdate( @md_ctx, Memory, BytesReaded ) ;
       PosStream := PosStream + BytesReaded;

       if Assigned( fsOnProgress ) then
          fsOnProgress( PosStream, StreamSize );
    end;

E se entrar no loop ela recebe um valor de uma forma ou de outra.

Por esse motivo temos o aviso abaixo:

Citar

[dcc32 Hint] ACBrEAD.pas(1078): H2077 Value assigned to 'BytesToRead' never used

Você pode assim que possível aplicar essa correção pra gente?

Com isso encerro por enquanto a minha tarefa pois não recebo mais nenhum aviso quando utilizo os fontes do ACBr.

Para conseguir isso adicionei nos meus fontes no ACBr.inc e no RLReport.inc e com isso estou livre desses avisos.

Citar

{$IFDEF DELPHI15_UP}
  {$DEFINE HAS_FORMATSETTINGS}
  {$DEFINE HAS_REGEXPR}
  {$WARN IMPLICIT_STRING_CAST OFF}
  {$WARN IMPLICIT_STRING_CAST_LOSS OFF}
  {$WARN SYMBOL_DEPRECATED OFF}

{$ENDIF}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Pessoal após alguns meses posso dizer que estamos livres da grande maioria esmagadora dos avisos e para quem estiver disposto a zerar os avisos da IDE usando ACBr nas versões mais novas do Delphi.

Nesses últimos commits o @Daniel Simoes incluiu a diretiva:

Citar

// Para Remover Warnings de CAST causados por WideString/String/AnsiString, descomente a linha abaixo. (Apenas Delphi)
{.$DEFINE REMOVE_CAST_WARN}
 

Para quem quiser ver sua IDE livre dos milhares de avisos ative essa diretiva no seu ACBr.inc

Para ativar é só remover o ponto na frente dela:

Citar

{$DEFINE REMOVE_CAST_WARN}

 

Para quem usa o fortes precisa incluir no seu arquivo RLReport.inc  seguinte trecho:

Citar

{$IFDEF DELPHI15_UP}
  {$DEFINE HAS_FORMATSETTINGS}
  {$WARN IMPLICIT_STRING_CAST OFF}
  {$WARN IMPLICIT_STRING_CAST_LOSS OFF}
  {$WARN SYMBOL_DEPRECATED OFF}
  {$INLINE OFF}
{$ENDIF}

Devem restar apenas poucas linhas das units do Synapse mas faz parte.

Se sobrou algum aviso muito provável é decorrente das units de outros geradores de relatório, mas isso fica a cargo dos usuários dos mesmos.

Um forte abraço a todos e pronto para outra.

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Fundadores

A implementação com ADD é proposital... veja o ACBrSerial-Change-Log

Citar

Data: 24/08/2016
-- ACBrECFEscECF --
[-] Alteração para que os valores dos totalizadores não sejam sobrepostos caso
    existam alíquotas duplicadas no ECF.
    (por: Elias César) 

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Moderadores

@EMBarbosa

Nesse últimos commits na classe TACBrECFClass foi adicionado essa atribuição

 

Citar

  {$IFNDEF FPC}
  // A linha abaixo remove Warning do Delphi (W1036 Variable 'Fim' might not have been initialized)
  // Isso é um bug do compilador Win32 presente pelo menos da versão Delphi 6 até a XE7 (http://stackoverflow.com/a/25905266/460775)
  Fim := True;
  {$ENDIF}

Mas meu Delphi passou a reclamar com esse hint: 

Citar

[dcc32 Hint] ACBrECFClass.pas(2193): H2077 Value assigned to 'Fim' never used

 

Você poderia fazer um ajuste pra gente?

Nesse treco: 

        Fim := True ;   <<<==== remove essa atribuição aqui, ela já foi atribuida lá em cima não precisa aqui novamente.
        if not FimLeitura then
         begin
           Fim  := False ;
           try
              fpRespostaComando := fpRespostaComando + { Le conteudo da porta }
                                   fpDevice.LeString(100) ;

              LenResp := Length( fpRespostaComando ) ;
              if LenResp <> fsBytesRec then
              begin
                 // ECF está respondendo, portanto está trabalhando //
                 TempoLimite := IncSecond(now, TimeOut);
                 fsBytesRec  := LenResp ;
              end ;
           except
              sleep(10) ;
           end ;

           FimLeitura := VerificaFimLeitura(fpRespostaComando, TempoLimite) ;
         end
        else
           if AguardaImpressao then
           begin
              Fim := VerificaFimImpressao( TempoLimite ) ;

              if not Fim then
                 sleep(200) ;
           end ;

        {$IFNDEF NOGUI}
          if fpDevice.ProcessMessages then
	     Application.ProcessMessages;
        {$ENDIF}
     until Fim ;

Dessa forma acredito melhorar sua atribuição anterior:

Citar

 {$IFNDEF FPC}  //remover isso
  // A linha abaixo remove Warning do Delphi (W1036 Variable 'Fim' might not have been initialized) //remover isso
  // Isso é um bug do compilador Win32 presente pelo menos da versão Delphi 6 até a XE7 (http://stackoverflow.com/a/25905266/460775) //remover isso
  Fim := True;
 // {$ENDIF} //remover isso

 

Link para o comentário
Compartilhar em outros sites

  • Consultores
47 minutos atrás, Waldir Paim disse:

@EMBarbosa

Nesse últimos commits na classe TACBrECFClass foi adicionado essa atribuição

 

Mas meu Delphi passou a reclamar com esse hint: 

 

Você poderia fazer um ajuste pra gente?

 

Não posso fazer o ajuste conforme você pede porque é um loop. Posso rever a posição da atribuição, mas talvez seja melhor ajustar o código.

Qual a versão do Delphi você usa?

[]'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

  • Consultores

Altere o código para o abaixo e verifique por favor:

  {$IFNDEF FPC}
  {$IFNDEF DELPHIXE8_UP}
  // A linha abaixo remove Warning do Delphi (W1036 Variable 'Fim' might not have been initialized)
  // Isso é um bug do compilador Win32 presente pelo menos da versão Delphi 6 até a XE7 (http://stackoverflow.com/a/25905266/460775)
  Fim := True;
  {$ENDIF}
  {$ENDIF}

 

  • Curtir 1

[]'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

  • Consultores
1 hora atrás, Waldir Paim disse:

@EMBarbosa

Resolvido.

Beleza. Estou enviando ao SVN. Esse código assume que no XE8 já está corrigido. Não sei se é verdade pois não tenho essas versões no momento.

Pode ser necessário alterar a diretiva "{$IFNDEF DELPHIXE8_UP}" para outra versão

[]'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

  • 4 semanas depois ...
  • Este tópico foi criado há 2117 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.