Ir para conteúdo
  • Cadastre-se

dev botao

Compilação com fontes na uses - Excesso de warnings e hints


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

Recommended Posts

Postado

Olá a todos devs do Acbr:

Uma compilação simples, mas usando os fontes na library path, tem gerado um tanto quanto de hints e warnings.

Variáveis perdidas, sem uso, retornos sem serem atribuídos, enfim, aparece de tudo, o warning do 'DELAYED'  é campeão, deprecated (essa deprecated do lado de cá, tudo bem, mas nos fontes que quem mexeu... penso que deveria corrigir, não?), inicializacoes de variaveis, não usadas (never used), variaveis não inicializadas, conversoes de variants -> ansistring, com potencial perda de dados. 

 

coisa do tipo: 

[dcc32 Warning] ACBrBoletoW_Sicredi_API.pas(230): W1000 Symbol 'UTF8Decode' is deprecated: 'Use UTF8ToWideString or UTF8ToString'

[dcc32 Warning] JsonsUtilsEx.pas(244): W1057 Implicit string cast from 'TSymbolName' to 'string'

[dcc32 Warning] JsonsUtilsEx.pas(273): W1057 Implicit string cast from 'TSymbolName' to 'string'

[dcc32 Hint] ACBrCTeWebServices.pas(2032): H2164 Variable 'aEvento' is declared but never used in 'SalvarEventos'

[dcc32 Hint] ACBrCTeWebServices.pas(2032): H2164 Variable 'aProcEvento' is declared but never used in 'SalvarEventos'

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

[dcc32 Warning] pnfsLerListaNFSe.pas(1342): W1036 Variable 'DataRecebimentoTemp' might not have been initialized

[dcc32 Hint] pnfsNFSeR.pas(244): H2077 Value assigned to 'TNFSeR.LerRPS' never used

[dcc32 Hint] pnfsNFSeR.pas(5296): H2164 Variable 'vLinha' is declared but never used in 'TNFSeR.LerRPS_Smarapd'

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

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

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

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

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

[dcc32 Warning] ACBrEscPosEpson.pas(779): W1000 Symbol 'LeftStr' is deprecated: 'Moved to the AnsiStrings unit'

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

[dcc32 Warning] ACBrEscBematech.pas(146): W1057 Implicit string cast from 'AnsiChar' to 'string'

[dcc32 Warning] ACBrEscBematech.pas(147): W1057 Implicit string cast from 'AnsiChar' to 'string'

[dcc32 Warning] ACBrEscBematech.pas(148): W1057 Implicit string cast from 'AnsiChar' to 'string'

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

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

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

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

[dcc32 Warning] ACBrEscBematech.pas(211): W1057 Implicit string cast from 'AnsiChar' to 'string'

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

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

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

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

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

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

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

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

[dcc32 Warning] ACBrEscDaruma.pas(230): W1057 Implicit string cast from 'AnsiChar' to 'string'

[dcc32 Warning] ACBrEscDaruma.pas(231): W1057 Implicit string cast from 'AnsiChar' to 'string'

[dcc32 Warning] ACBrEscDaruma.pas(232): W1057 Implicit string cast from 'AnsiChar' to 'string'

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

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

[dcc32 Warning] libxml2.pas(2763): W1002 Symbol 'DELAYED' is specific to a platform

[dcc32 Warning] libxml2.pas(2764): W1002 Symbol 'DELAYED' is specific to a platform

[dcc32 Warning] libxml2.pas(2765): W1002 Symbol 'DELAYED' is specific to a platform

[dcc32 Warning] libxml2.pas(2766): W1002 Symbol 'DELAYED' is specific to a platform

[dcc32 Warning] libxml2.pas(2767): W1002 Symbol 'DELAYED' is specific to a platform

[dcc32 Warning] libxml2.pas(2768): W1002 Symbol 'DELAYED' is specific to a platform

[dcc32 Warning] libxml2.pas(2769): W1002 Symbol 'DELAYED' is specific to a platform

[dcc32 Warning] libxml2.pas(2770): W1002 Symbol 'DELAYED' is specific to a platform

[dcc32 Warning] libxml2.pas(2771): W1002 Symbol 'DELAYED' is specific to a platform

[dcc32 Warning] libxml2.pas(2772): W1002 Symbol 'DELAYED' is specific to a platform

[dcc32 Warning] libxml2.pas(2773): W1002 Symbol 'DELAYED' is specific to a platform

[dcc32 Warning] libxml2.pas(2774): W1002 Symbol 'DELAYED' is specific to a platform

 

[dcc32 Warning] ACBrCEP.pas(908): W1000 Symbol 'LerTagXML' is deprecated: 'Use o método SeparaDados()'

[dcc32 Warning] ACBrCEP.pas(909): W1000 Symbol 'LerTagXML' is deprecated: 'Use o método SeparaDados()'

[dcc32 Warning] ACBrCEP.pas(910): W1000 Symbol 'LerTagXML' is deprecated: 'Use o método SeparaDados()'

[dcc32 Warning] ACBrCEP.pas(911): W1000 Symbol 'LerTagXML' is deprecated: 'Use o método SeparaDados()'

[dcc32 Warning] ACBrCEP.pas(960): W1000 Symbol 'LerTagXML' is deprecated: 'Use o método SeparaDados()'

[dcc32 Warning] ACBrCEP.pas(965): W1000 Symbol 'LerTagXML' is deprecated: 'Use o método SeparaDados()'

[dcc32 Warning] ACBrCEP.pas(966): W1000 Symbol 'LerTagXML' is deprecated: 'Use o método SeparaDados()'

[dcc32 Warning] ACBrCEP.pas(967): W1000 Symbol 'LerTagXML' is deprecated: 'Use o método SeparaDados()'

[dcc32 Hint] ACBrDFeHttpOpenSSL.pas(215): H2077 Value assigned to 'SSLMethod' never used

[dcc32 Warning] ACBrDFeXsXmlSec.pas(652): W1000 Symbol 'LerTagXML' is deprecated: 'Use o método SeparaDados()'

 

[dcc32 Warning] ACBrDFeSSL.pas(845): W1000 Symbol 'FileAge' is deprecated

[dcc32 Warning] pcnEnvEventoNFe.pas(193): W1000 Symbol 'ExtrairCNPJChaveAcesso' is deprecated: 'Obsoleta: Use a função ExtrairCNPJCPFChaveAcesso'

 

Em conversa ai com Daniel, sugeriu postar aqui, para todos, e discutir, como poderia ajudar resolver esses contratempos.

Grato

  • Curtir 1
  • Moderadores
Postado
15 minutos atrás, Antonio Gomes disse:

Não tenho, mas posso anexar corrigida na ultima versão.

Se tem que suportar tanta versão, pq já não orientar colocar diretivas? Pensa...

temos que dar suporte do Delphi 7 ao Alexandria e ao Lazarus então não podemos tratar em pensar em uma versão somente.,

senão já teriamos abandonado e só cuidado para versão Alexandria e o Lazarus 2.2.0

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

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

 

Postado

Achei uma solucao para string data loss: 

vou criar um bat, e colocar em cada unit isso

 

{$IFDEF UNICODE}
  {$WARN IMPLICIT_STRING_CAST OFF}
  {$WARN IMPLICIT_STRING_CAST_LOSS OFF}
{$ENDIF}

Logo após a linha {$I ACBr.inc}

Com poucas units, ja caiu de 3 mil para 2 mil warnings...

Postado (editado)

28, defined ver350.

mas essa paradinha ai, achei na unit ldapsend.pas, synapse, pasta \ACBr2wc\Fontes\Terceiros\synalist

e nesse site https://wiki.freepascal.org/$warn

Inclusive, se seguir a linha de raciocínio dessa unit, reduz um pouco..

analisando o acbr.inc, o meu fica assim

 

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

mas ta entrando nessa linha, e desligando a diretiva que eu coloquei true, lá no instalador:

comentei ali, parou as tranqueiras

{$IFNDEF DELPHIXE2_UP}
  {$IFDEF BORLAND}
//       {$UNDEF REMOVE_CAST_WARN}

  {$ENDIF}
{$ENDIF}
 

Editado por Antonio Gomes
  • Curtir 1
  • Moderadores
Postado
6 minutos atrás, Antonio Gomes disse:

agora é descobrir de onde está vindo isso DELPHIXE2_UP

sabe me falar? dei um grep search aqui, caiu em ACBr_jedi.inc da pasta \ACBr2wc\Fontes\ACBrComum

 

Configura no ACBr.inc

 

Citar

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

Citar

{$IFNDEF DELPHIXE2_UP}
  {$IFDEF BORLAND}
       {$UNDEF REMOVE_CAST_WARN}        <<<=aqui
  {$ENDIF}
{$ENDIF}

Citar

{$IFDEF REMOVE_CAST_WARN}
  {$WARN IMPLICIT_STRING_CAST OFF}
  {$WARN IMPLICIT_STRING_CAST_LOSS OFF}
  {$WARN SYMBOL_PLATFORM OFF}
  {.$WARN SYMBOL_DEPRECATED OFF}        <<<=aqui
  {$IFDEF BORLAND}
    {$WARN DUPLICATE_CTOR_DTOR OFF}
    {$WARN CVT_ACHAR_TO_WCHAR OFF}
  {$ENDIF}
{$ENDIF}

 

Dá uma olha nesses blocos!

Observe onde anotei a expressão:    <<<=aqui

Isso vai limpar seu log de hints e warnigs.

 

Postado

pensa comigo...

Se {$IFNDEF DELPHIXE2_UP} certamente, pq dela para baixo, e ela, não suporta o desligamento de diretiva, logo, ao definir a versão 28, algo está fazendo essa diretiva ser false.

 

  • Moderadores
Postado

No primeiro bloco:

{$DEFINE REMOVE_CAST_WARN}    tira o ponto do inicio! isso ativa a diretiva

No segundo bloco:

{.$UNDEF REMOVE_CAST_WARN}   você desativa ele com um ponto no inicio

No terceiro bloco:

{.$WARN SYMBOL_DEPRECATED OFF}   remove o ponto do inicio

Postado
4 minutos atrás, Waldir Paim disse:

No primeiro bloco:

{$DEFINE REMOVE_CAST_WARN}    tira o ponto do inicio! isso ativa a diretiva

já está assim.

 

4 minutos atrás, Waldir Paim disse:

No segundo bloco:

{.$UNDEF REMOVE_CAST_WARN}   você desativa ele com um ponto no inicio

nessa parte que voce não endenteu, não poderia nunca desativar a diretiva REMOVE_CAST_WARN, pois repara esse trecho:

{$IFNDEF DELPHIXE2_UP}  << quando fala delphixe2_up, nao engloba alexandria:? que é acima da Xe2 ?
  {$IFDEF BORLAND}
     {$UNDEF REMOVE_CAST_WARN} << desliga ela aqui, pq entrou aqui ?
  {$ENDIF}
{$ENDIF}
 

  • Moderadores
Postado
Citar

{$IFNDEF DELPHIXE2_UP 

Não!

 

Aqui quer dizer!

Delphi X2 ou inferior!

{$IFNDEF DELPHIXE2_UP   <<esse N em destaque ali é uma negativa!  quer dizer se não for XE2_UP   Up aqui quer dizer Maior

 

Postado

eu fiquei na duvida agora, pois na unit ACBr_jedi.inc, tem:

{------------------------------------------------------------------------------}
{ DELPHIX_UP from DELPHIX_UP mappings                                          }
{------------------------------------------------------------------------------}

{$IFDEF DELPHI28_UP}
  {$DEFINE DELPHIX_ALEXANDRIA_UP} // synonym to DELPHI28_UP
  {$DEFINE DELPHI27_UP}
{$ENDIF}

{$IFDEF DELPHI27_UP}
  {$DEFINE DELPHIX_SYDNEY_UP} // synonym to DELPHI27_UP
  {$DEFINE DELPHI26_UP}
{$ENDIF}

{$IFDEF DELPHI26_UP}
  {$DEFINE DELPHIX_RIO_UP} // synonym to DELPHI26_UP
  {$DEFINE DELPHI25_UP}
{$ENDIF}

{$IFDEF DELPHI25_UP}
  {$DEFINE DELPHIX_TOKYO_UP} // synonym to DELPHI25_UP
  {$DEFINE DELPHI24_UP}
{$ENDIF}

{$IFDEF DELPHI24_UP}
  {$DEFINE DELPHIX_BERLIN_UP} // synonym to DELPHI24_UP
  {$DEFINE DELPHI23_UP}
{$ENDIF}

{$IFDEF DELPHI23_UP}
  {$DEFINE DELPHIX_SEATTLE_UP} // synonym to DELPHI23_UP
  {$DEFINE DELPHI22_UP}
{$ENDIF}

{$IFDEF DELPHI22_UP}
  {$DEFINE DELPHIXE8_UP} // synonym to DELPHI22_UP
  {$DEFINE DELPHI21_UP}
{$ENDIF}

{$IFDEF DELPHI21_UP}
  {$DEFINE DELPHIXE7_UP} // synonym to DELPHI21_UP
  {$DEFINE DELPHI20_UP}
{$ENDIF}

{$IFDEF DELPHI20_UP}
  {$DEFINE DELPHIXE6_UP} // synonym to DELPHI20_UP
  {$DEFINE DELPHI19_UP}
{$ENDIF}

{$IFDEF DELPHI19_UP}
  {$DEFINE DELPHIXE5_UP} // synonym to DELPHI19_UP
  {$DEFINE DELPHI18_UP}
{$ENDIF}

{$IFDEF DELPHI18_UP}
  {$DEFINE DELPHIXE4_UP} // synonym to DELPHI18_UP
  {$DEFINE DELPHI17_UP}
{$ENDIF}

{$IFDEF DELPHI17_UP}
  {$DEFINE DELPHIXE3_UP} // synonym to DELPHI17_UP
  {$DEFINE DELPHI16_UP}
{$ENDIF}

{$IFDEF DELPHI16_UP}
  {$DEFINE DELPHIXE2_UP} // synonym to DELPHI16_UP
  {$DEFINE DELPHI15_UP}
{$ENDIF}

 

 

Para mim, ela tem que chegar true lá no teste, e não cair no "not", pois não é not... vou dormir, deve ser falta disso.

Postado

faz um teste no seu, move as linhas:

 

// utilizar para facilitar a manutenção do ACBr.inc, já que ele era uma cópia
// da jedi, essa mudança permite uma evolução melhor do arquivo.
//------------------------------------------------------------------------------
{$I ACBr_jedi.inc}
 

para altura da linha 119 da unit acbr.inc

  • Curtir 1
  • Moderadores
Postado
24 minutos atrás, Antonio Gomes disse:

A correção que fiz aqui, resolveu, caiu de 30 mil warnings, para 1069.

Vai ser corrigido isso na Acbr.inc? ou mando aqui  para voce?

ACBr.inc 10 kB · 0 downloads

Você não aplicou as alterações que te indiquei!

Faça os ajustes que esses 1069 dependendo das units utilizadas no seu projeto! deve despencar para menos de uma dezena!

Postado
8 minutos atrás, Waldir Paim disse:

Você não aplicou as alterações que te indiquei!

Faça os ajustes que esses 1069 dependendo das units utilizadas no seu projeto! deve despencar para menos de uma dezena!

Não foi preciso, pois movendo a linha para cima, a inicialização da diretiva DELPHIXE2_UP foi feita. E o chaveamento {$IFDEF REMOVE_CAST_WARN} não é anulado. Logo, fica faltando apenas o bloco de deprecated, que vou corrigir onde tiver como mexer, e mandar ai para vocês. Entendo que deprecated é trem velho....

Se você analisar bem essa unit, vai ver que ela precisa ser colocada antes ainda, pois tem uma variável BORLAND sendo acionada, e ela ainda não foi inicializada.

Veja ai, analisa se precisa subir para linha: 86, o bloco onde faz {$DEFINE BORLAND}, ou seja, na unit anterior já define ela... vai ver o else foi colocado desnecessário

 

(*//////////////// IMPLEMENTAÇÃO  ////////////////////*)

// Ajusta FreePascal para o modo Delphi
//------------------------------------------------------------------------------
{$IFDEF FPC}
  {$DEFINE USE_UTF8}
  {$UNDEF BORLAND}
  {$DEFINE DFE_SEM_INDY}
  {$DEFINE VCL}
  {$DEFINE UNICODE} // Lazarus 0.9.26 usa UnicodeString como default para String
  {$DEFINE DELPHI7}
  {$DEFINE COMPILER7}
  {$DEFINE HAS_FORMATSETTINGS}
  {$DEFINE HAS_REGEXPR}
  {$DEFINE HAS_INLINE}
  {$DEFINE HAS_STRICTDELIMITER}
  {$H+}

  {$UnDef FMX}
  {$UnDef FPC3}
  {$UnDef FPC2}
  {$IFDEF VER2}
   {$DEFINE FPC2}
  {$EndIf}
  {$IFDEF VER3}
   {$DEFINE FPC3}
  {$ENDIF}
  {$IFDEF FPC3}
   {$DEFINE HAS_CHARINSET}
   {$DEFINE SUPPORTS_DEPRECATED_DETAILS}
   {$UnDef FPC2}
  {$ENDIF}
  {$UNDEF REMOVE_CAST_WARN} //Devido a problemas com a mensagem de erro "Message recordind not yet supported"
{$ELSE}  << 
  {$DEFINE BORLAND} << vem la da unit Acbr_jedi.inc e a chamada dessa unit, por meio do {$I esta abaixo daqui...

{$ENDIF}

  • Curtir 1
  • Moderadores
Postado
1 hora atrás, Antonio Gomes disse:

A correção que fiz aqui, resolveu, caiu de 30 mil warnings, para 1069.

Vai ser corrigido isso na Acbr.inc? ou mando aqui  para voce?

ACBr.inc 10 kB · 2 downloads

Acho que faz sentido a alteração no ACBr.inc, movendo o {$I ACBr_jedi.inc} acima.

Também concordo que com isso o define/undef "BORLAND" do ACBr.inc pode ser removido pois já é feito na ACBr_jedi.inc.

A diretiva que desativa os warnings de deprecated é melhor manter comentado pois indica trecho de código que precisa mexer.

Só não entendi porque aqui no meu Delphi Rio 10.3.3 não estava mostrando os warnings de conversão de strings, em teoria devia estar mostrando.

Enfim, o @EMBarbosa pode analisar.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado
45 minutos atrás, BigWings disse:

Acho que faz sentido a alteração no ACBr.inc, movendo o {$I ACBr_jedi.inc} acima.

Também concordo que com isso o define/undef "BORLAND" do ACBr.inc pode ser removido pois já é feito na ACBr_jedi.inc.

A diretiva que desativa os warnings de deprecated é melhor manter comentado pois indica trecho de código que precisa mexer.

Só não entendi porque aqui no meu Delphi Rio 10.3.3 não estava mostrando os warnings de conversão de strings, em teoria devia estar mostrando.

Enfim, o @EMBarbosa pode analisar.

Isso é mais visível, no aplicativo, e fazendo compilação com build all.

Postado
14 minutos atrás, Juliomar Marchetti disse:

Uma dúvida. chegou a olhar senão tem emais locais o .inc do acbr em seu micro?

Não tem. Uma versão já dá para rir e chorar de delphi. kkk Nem componentes, sempre que atualizo, mando aquele comando ali do Tortoise, o CleanUp.

  • Moderadores
Postado
17 minutos atrás, Antonio Gomes disse:

Isso é mais visível, no aplicativo, e fazendo compilação com build all.

Pode alterar o ACBrInstall_Trunk2 pra mostrar os warnings e hints no log.

image.png

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

  • Consultores
  • Solution
Postado
Em 03/03/2022 at 08:39, Antonio Gomes disse:

A correção que fiz aqui, resolveu, caiu de 30 mil warnings, para 1069.

Vai ser corrigido isso na Acbr.inc? ou mando aqui  para voce?

ACBr.inc 10 kB · 3 downloads

Realmente me parece estar correto. Enviei ao SVN na revisão 24813.

Em 03/03/2022 at 10:47, Antonio Gomes disse:

ão tem. Uma versão já dá para rir e chorar de delphi. kkk Nem componentes, sempre que atualizo, mando aquele comando ali do Tortoise, o CleanUp.

Em 03/03/2022 at 09:43, BigWings disse:

Só não entendi porque aqui no meu Delphi Rio 10.3.3 não estava mostrando os warnings de conversão de strings, em teoria devia estar mostrando.

não tem muito sentido mesmo. Só se os arquivos tivessem sido compilados com uma versão diferente do ACBr.inc ou houvesse algum arquivo perdido em outro lugar.

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