Ir para conteúdo
  • Cadastre-se

dev botao

ACBR e Delphi Unicode


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

Recommended Posts

Prezados do Projeto ACBR,

Migrei o projeto do Delphi 7 p/ o Delphi XE3.
Ao fazer o Build, percebi que são listados vários warnings nas units do ACBR.
Ex:

[dcc32 Warning] pcnGerador.pas(374): W1057 Implicit string cast from 'AnsiString' to 'string'

[dcc32 Warning] pcnGerador.pas(624): W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString'

[dcc32 Warning] pnfsNFSeR.pas(976): W1050 WideChar reduced to byte char in set expressions.  Consider using 'CharInSet' function in 'SysUtils' unit.

Isso pode afetar os dados?
Grata

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Nao... eles já estão aí faz um tempo...

Se não me engano, há uma diretiva em ACBr.inc, para desligar esses warnings 

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

  • Fundadores

Achei...

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

 

  • Curtir 1
  • Obrigado 1
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
7 horas atrás, Alice disse:

Prezados do Projeto ACBR,

Migrei o projeto do Delphi 7 p/ o Delphi XE3.
Ao fazer o Build, percebi que são listados vários warnings nas units do ACBR.
Ex:

[dcc32 Warning] pcnGerador.pas(374): W1057 Implicit string cast from 'AnsiString' to 'string'

[dcc32 Warning] pcnGerador.pas(624): W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString'

[dcc32 Warning] pnfsNFSeR.pas(976): W1050 WideChar reduced to byte char in set expressions.  Consider using 'CharInSet' function in 'SysUtils' unit.

Isso pode afetar os dados?
Grata

Se usar o instalador ele tem uma opção que basta marcar ou desmarcar.

5 horas atrás, Daniel Simoes disse:

Achei...


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

 

 

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 mês depois ...

No ACBr.inc adicionei mais uma diretiva de compilação, para desativar warnings de funções exclusivas de uma determinada plataforma

{$IFDEF REMOVE_CAST_WARN}
  {$WARN IMPLICIT_STRING_CAST OFF}
  {$WARN IMPLICIT_STRING_CAST_LOSS OFF}
  {$WARN SYMBOL_DEPRECATED OFF}
  {$WARN SYMBOL_PLATFORM OFF}
{$ENDIF}

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Prefiro não acatar algumas coisas, pois poderiam causar Warnings em FPC... Como por exemplo a atribuição de "Result",  no inicio dos métodos de ACBrSAT....

o que faz ?

{$WARN DUPLICATE_CTOR_DTOR OFF}

 

Esse tipo de notação de Unit não é aceita por D7 ou FPC

 System.Contnrs

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

14 minutos atrás, Daniel Simoes disse:

Prefiro não acatar algumas coisas, pois poderiam causar Warnings em FPC... Como por exemplo a atribuição de "Result",  no inicio dos métodos de ACBrSAT....

o que faz ?

{$WARN DUPLICATE_CTOR_DTOR OFF}

 

Esse tipo de notação de Unit não é aceita por D7 ou FPC

 System.Contnrs

Olá Daniel.

Sobre o result, se atrubuir um valor que não será usado, antes do result receber outro valor o delphi gera warnings, por este motivo que comentei as atribuições dos results no inicio do método.

sobre {$WARN DUPLICATE_CTOR_DTOR OFF}, no delphi quando tem 2 constructor com nomes diferentes e parametros iguais isso gera um warning, que é o caso da unit ACBrDFeException, acredito que poderia incluir no ACBr.inc como abaixo

{$IFDEF REMOVE_CAST_WARN}
  {$WARN IMPLICIT_STRING_CAST OFF}
  {$WARN IMPLICIT_STRING_CAST_LOSS OFF}
  {$WARN SYMBOL_DEPRECATED OFF}
  {$WARN SYMBOL_PLATFORM OFF}
  {$WARN DUPLICATE_CTOR_DTOR OFF}
{$ENDIF}

 

att, abraços

sobre o System.Contnrs o delphi deve ter colocado automaticamente, pois nao me lembro de ter adicionado esta unit

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores
4 minutos atrás, Emerson Teixeira disse:

Sobre o result, se atrubuir um valor que não será usado, antes do result receber outro valor o delphi gera warnings, por este motivo que comentei as atribuições dos results no inicio do método.

Acredito que ele gere "Hints", correto ?  Hints são opcionais... eu acho que o código fica mais seguro e legível, com a atribuição de um Result no inicio do método...

As modificações na Synapse, preciso avaliar com mais calma... tento manter ela, o mais possível perto dos fontes originais... (embora a tempos o autor original, não faça melhorias nos fontes)

6 minutos atrás, Emerson Teixeira disse:

sobre {$WARN DUPLICATE_CTOR_DTOR OFF}, no delphi quando tem 2 constructor com nomes diferentes e parametros iguais isso gera um warning, que é o caso da unit ACBrDFeException, acredito que poderia incluir no ACBr.inc como abaixo

Em qual método isso ocorre ? Como é o construtor original, em seu Delphi ?

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

 

37 minutos atrás, Daniel Simoes disse:

Acredito que ele gere "Hints", correto ? 

Sim...

 

37 minutos atrás, Daniel Simoes disse:

Hints são opcionais... eu acho que o código fica mais seguro e legível, com a atribuição de um Result no inicio do método...

por mim sem problemas... mas o intuito seria remover hints e warnings na medida do possível rsrs..

 

1 hora atrás, Daniel Simoes disse:

sobre {$WARN DUPLICATE_CTOR_DTOR OFF}

image.png.120ccbff07b0b6e76a4377ecf3328dca.png

1 hora atrás, Daniel Simoes disse:

Em qual método isso ocorre ?

CreateDef.

 

1 hora atrás, Daniel Simoes disse:

Como é o construtor original, em seu Delphi ?

Create

 

note que o warning ocorre apenas quando compilo para 64 bits...

att

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...

Boa tarde Daniel.

Fiz mais algumas alterações nos fontes visando a remoção de warnings e hints.

Desta vez alterei o ACBr.inc e adicionei a diretiva {$I ACBr.inc} nas units sem a referência ao inc. Dessa forma que quiser desativar basta alterar o inc.

att.

 

trunk2.rar

Editado por Emerson Teixeira
Link para o comentário
Compartilhar em outros sites

  • Fundadores

Devemos mesmo desligar tudo isso ?

  {$WARN USE_BEFORE_DEF OFF}        	// quando atribui valor à uma variável e este não é usado no decorrer da function/procedure
  {$WARN TYPEINFO_IMPLICITLY_ADDED OFF}	// http://docwiki.embarcadero.com/RADStudio/Tokyo/en/W1055_Published_caused_RTTI_($M%2B)_to_be_added_to_type_%27%25s%27_(Delphi)
  {$WARN WIDECHAR_REDUCED OFF}          // quando compara string com char ex: (if sOperacao[1] in ['A', 'B'] then) 	
  {$HINTS OFF}							// para remover hints de variáveis/funções que foram declarados e nao usados e outros hints

me parece que isso poderá ocultar alguns Hints válidos...

  • Curtir 1
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

  • Consultores
11 minutos atrás, Daniel Simoes disse:

{$HINTS OFF} // para remover hints de variáveis/funções que foram declarados e nao usados e outros hints

Isso nunca deveria ser aplicado. Você está desligando os hints do compilador.

Não tem sentido o time que trabalha no compilador adicionar as hints que todo mundo ignora.

  • 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

35 minutos atrás, Daniel Simoes disse:

Devemos mesmo desligar tudo isso ?


  {$WARN USE_BEFORE_DEF OFF}        	// quando atribui valor à uma variável e este não é usado no decorrer da function/procedure
  {$WARN TYPEINFO_IMPLICITLY_ADDED OFF}	// http://docwiki.embarcadero.com/RADStudio/Tokyo/en/W1055_Published_caused_RTTI_($M%2B)_to_be_added_to_type_%27%25s%27_(Delphi)
  {$WARN WIDECHAR_REDUCED OFF}          // quando compara string com char ex: (if sOperacao[1] in ['A', 'B'] then) 	
  {$HINTS OFF}							// para remover hints de variáveis/funções que foram declarados e nao usados e outros hints

me parece que isso poderá ocultar alguns Hints válidos...

Olá Daniel.

isso foi apenas uma sugestão, pois você comento que não quer alterar as units de terceiros...

Acredito que estas diretivas deveriam ser incluídas no ACBr.inc  comentadas, seria opcional ativá-las (critério de cada um), ou então alterar a units onde os hints e wanings ocorrem (me disponho a fazer esta parte se for o caso).

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Bom... como sou usuário de Lazarus... ficou pouco a vontade para acatar essas sugestões que afetariam o Delphi...

Vou deixar a cargo do @EMBarbosa e @Waldir Paim

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

19 minutos atrás, EMBarbosa disse:

Isso nunca deveria ser aplicado. Você está desligando os hints do compilador.

Não tem sentido o time que trabalha no compilador adicionar as hints que todo mundo ignora.

Ola EMBarbosa, 

concordo plenamente com você, fiz esta sugestão, pois o Daniel disse que não pretende alterar as units de terceiros, note que adicionei apenas a referência ao ACBr.inc nessas units, tentando alterar o minimo possível, mas se for o caso de alterá-las ajudarei no que for possível.

att

Link para o comentário
Compartilhar em outros sites

  • Consultores
42 minutos atrás, Emerson Teixeira disse:

Ola EMBarbosa, 

concordo plenamente com você, fiz esta sugestão, pois o Daniel disse que não pretende alterar as units de terceiros, note que adicionei apenas a referência ao ACBr.inc nessas units, tentando alterar o minimo possível, mas se for o caso de alterá-las ajudarei no que for possível.

att

As alterações nas units de terceiros geralmente devem ser direcionadas a eles. Por exemplo, se tem alguma sugestão no Fortes, seria melhor direcionar ao projeto Fortes. O mesmo caso para as units do projeto Synapse.

Com respeito a outras alterações e hints, a melhor maneira é analisar cada caso separadamente. Assim eu sugiro você criar um tópico diferente para analisar cada tipo de caso.

Se você postar a função em questão, qual o warning que está sendo gerado, quais as alterações sugeridas e os motivos, podemos discutir.

Depois de um caso estabelecido, outros códigos semelhantes podem ser alterados seguindo o modelo.

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

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

The popup will be closed in 10 segundos...