Ir para conteúdo
  • Cadastre-se

dev botao

Warnings Do Delphi Nas Units Do Acbr


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

Recommended Posts

Bom dia!

 

  Primeiramente gostaria de me apresentar e já agradecer a comunidade que criou este pacote de componentes, pois tem sido muito úteis na empresa onde trabalho. Aqui, sempre que encontrávamos algum ajuste ou melhoria que podia ser feito, meus colegas postavam no fórum e verificavam com vocês, mas agora resolvi vir aqui e dar minhas ideias também. :-P

 

  Bom, eu sempre fui meio "nazista" com os avisos e mensagens do compilador nos projetos que participei, pois sempre acreditei que se existe um warning, pode existir um erro, e é por isto que crio este tópico para tentarmos diminuir estes avisos. Vou listar abaixo por unit e método a mensagem que encontrei e como eu a corrigi. Tentei anexar os patchs do Subversion no tópico, mas o fórum me avisou que não tenho permissão para anexar este tipo de arquivo. Se alguém puder liberar isto, posso encaminhar pra vocês a minha solução.

 

Unit: ACBrEFDBlocos
Método: function StrToCodVer(AValue: string): TACBrVersaoLeiaute;
Mensagem: [DCC Warning] ACBrEFDBlocos.pas(450): W1035 Return value of function 'StrToCodVer' might be undefined
Solução: O warning acima é mostrado porque o compilador não consegue encontrar um "Result" padrão para quando o parâmetro "AValue" do método não for um dos já esperados nos IFs da rotina. Teríamos então de criar um retorno padrão ou então levantar uma exceção para o programador, como eu fiz no patch anexo.

Unit: ACBrUtil
Método: function FlushFileToDisk( sFile: string): boolean;
Mensagem: [DCC Warning] ACBrUtil.pas(2006): W1044 Suspicious typecast of string to PWideChar
Solução: Aqui o compilador não tem certeza de como converter a variável "filenome" de "String" para "PWideChar" diretamente, o que pode fazer com que o cast implícito feito por ele faça a string perder dados. A solução aqui seria explicitarmos o cast de "String" para "PWideChar" da seguinte forma: String->WideString->PWideChar.

 

Unit: ACBrEFDBloco_1_Class
Método: function TBloco_1.Registro1922New: TRegistro1922;
Mensagem: [DCC Warning] ACBrEFDBloco_1_Class.pas(1264): W1036 Variable 'U1921Count' might not have been initialized
Solução: Aqui houve um pequeno equivoco na variável utilizada para acessar o último item do registro 1920, pois estamos utilizando a variável que guarda o índice do último item do Regitro 1921, que ainda não foi preenchida.

 

  E era isto! Peço desculpas se isto já foi postado por alguém ou se criei o tópico no lugar errado e espero ter sido útil!

Programador na Sidicom Software.

Certificado Delphi Developer.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Olá Lucas,

   Eu também não gosto nada dos warnings e hints que aparecem. Uma das primeiras coisas que fiz quando comecei a mexer no código do ACBr foi remover alguns destas mensagens. Suas sugestões são bem vindas. Faça o seguinte, ao invés de anexar os patchs do SVN diretamente, zipa tudo. Ou se preferir, anexe os arquivos .pas.

   Assim qualquer desenvolvedor ACBr poderá verificar.

   Só uma dúvida, qual a IDE que vocês estão usando? Delphi ou Lazarus? Qual 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

Opa, obrigado pela resposta "a jato" EMBarbosa!

 

Vou anexar abaixo então um .zip com os três patchs juntos e outro com os fontes, pra dar as duas opções.

 

Sobre a IDE, hoje estamos usando o Delphi 2007 Professional, versão 11.0.2902.10471.

Fontes.zip

Patchs.zip

Programador na Sidicom Software.

Certificado Delphi Developer.

Link para o comentário
Compartilhar em outros sites

  • Consultores

As sugestões 1 e 3 eu subi para o SVN na Revisão  5715.
Pelo que vi está tudo certo.
Favor testar e reportar qualquer problema.
Obrigado.

 

A sugestão de alteração do ACBrUtil eu preciso testar no Lazarus e no Delphi 7 antes. Não vou conseguir fazer isso agora.

Acredito que não tenha nenhum problema, mas se alguém puder testar pra nós, eu posso subir. Ou talvez outro desenvolvedor possa fazê-lo.

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

Olá Alexsander,

   agradecemos sua disposição. Se quiser pegar algum componente ou unit em especial, talvez um que você use mais, fique à vontade em fazer como o Lucas fez.

   Se você mencionar antes qual unit você vai pegar isso vai permitir que outros voluntários, caso hajam, não entrem em conflito com seu trabalho.

   Depois basta anexar aqui no fórum. Pode ser neste mesmo tópico.

   Não é um requisito, mas se adicionar uma descrição dos motivos das modificações fica ainda mais rápido para analisar.

 

EDIT: Vale apena lembrar que já aconteceu algumas vezes que a remoção de um warning ou hint numa versão mais nova do Delphi cause algum problema em versões mais antigas. Então também levamos em conta isso antes de fazer uma alteração como essa.

 

EDIT2:


Vou anexar abaixo então um .zip com os três patchs juntos e outro com os fontes, pra dar as duas opções.

 

Lucas,

    Esqueci de dizer que os arquivos .pas você não deve precisar compactar. E quando for um arquivo só prefira anexá-lo sem compactar. É claro que se ele for muito grande é até bom que se compacte.

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

Eu comecei a fazer isso um tempo atrás, parei por falta de tempo, mas se organizássemos uma forma de cada usuário pegar uma componente por exemplo seria perfeito.

 

Só temos que tomar cuidado para não perder a retrocompatibilidade, só para reforçar o ACBr tem que funcionar em todas as versões do delphi e lazarus. 

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

Opa,

 

  Até me ânimo em montar uma força-tarefa para deixar os componentes redondinhos. Até porque hoje na empresa utilizamos apenas o componente do SPED Fiscal, mas estamos analisando a inclusão dos outros do pacote, então se estiver tudo certinho, é melhor ainda!

 

  Infelizmente (ou felizmente :mrgreen: ) vou entrar em férias a partir do dia 14/08 e pretendo me afastar um pouco do computador e internet para dar atenção a outros projetos, então só poderei ajudar mesmo o pessoal a partir de setembro.

 

  Sobre a compatibilidade com todas as versões do Delphi, concordo e acho legal pensarmos nesta questão também. Vou ver se consigo montar algumas máquinas virtuais com diferentes versões do delphi para conseguir testar as modificações antes de postar aqui.

Programador na Sidicom Software.

Certificado Delphi Developer.

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3919 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.