Ir para conteúdo
  • Cadastre-se

dev botao

Remoção de Hints e Warning do ACBr


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

Recommended Posts

  • Moderadores

Olá a todos!

De acordo com outros tópicos que estão orientando a migração para compiladores mais modernos.

Quero na medida do possível ajudar para que o código fique cada fez melhor e com menos hints e Warnings.

Colei abaixo um exemplo do que estou dizendo.

Citar

[Hint] ACBrUtil.pas(533): Value assigned to 'P2F' never used
[Hint] ACBrUtil.pas(532): Value assigned to 'P1F' never used
[Hint] ACBrUtil.pas(3224): Value assigned to 'PosIni' never used
[Hint] ACBrPAFClass.pas(76): Private symbol 'Insert' declared but never used
[Hint] ACBrPAFClass.pas(300): Private symbol 'Insert' declared but never used
[Warning] Unit 'ACBrZLibEx' implicitly imported into package 'ACBr_Comum'
[Warning] Unit 'ACBrZLibExApi' implicitly imported into package 'ACBr_Comum'
 

  Esse exemplo acima foi gerado na instalação do package ACBr_Diversos no D7;

Mas ele não mostra nem uma parte dos alertas que a IDE mais nova mostra.

Como apresenta no trecho abaixo.

Citar

[dcc32 Warning] ACBrZLibExGZ.pas(1023): W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString'
[dcc32 Warning] ACBrUtil.pas(531): W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString'
[dcc32 Warning] ACBrUtil.pas(531): W1058 Implicit string cast with potential data loss from 'Char' to 'AnsiString'
[dcc32 Warning] ACBrUtil.pas(531): W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString'
[dcc32 Warning] ACBrUtil.pas(531): W1058 Implicit string cast with potential data loss from 'Char' to 'AnsiString'
[dcc32 Hint] ACBrUtil.pas(533): H2077 Value assigned to 'P2F' never used
[dcc32 Hint] ACBrUtil.pas(532): H2077 Value assigned to 'P1F' never used
[dcc32 Warning] ACBrUtil.pas(738): W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString'
[dcc32 Warning] ACBrUtil.pas(744): W1057 Implicit string cast from 'AnsiString' to 'string'
[dcc32 Warning] ACBrUtil.pas(829): W1057 Implicit string cast from 'AnsiString' to 'string'
[dcc32 Warning] ACBrUtil.pas(833): W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString'
[dcc32 Warning] ACBrUtil.pas(841): W1057 Implicit string cast from 'AnsiString' to 'string'
[dcc32 Warning] ACBrUtil.pas(846): W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString'
[dcc32 Warning] ACBrUtil.pas(858): W1057 Implicit string cast from 'AnsiString' to 'string'
[dcc32 Warning] ACBrUtil.pas(885): W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString'
[dcc32 Warning] ACBrUtil.pas(897): W1057 Implicit string cast from 'AnsiString' to 'string'
[dcc32 Warning] ACBrUtil.pas(899): W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString'
[dcc32 Warning] ACBrUtil.pas(904): W1057 Implicit string cast from 'AnsiString' to 'string'
[dcc32 Warning] ACBrUtil.pas(905): W1057 Implicit string cast from 'AnsiString' to 'string'
[dcc32 Warning] ACBrUtil.pas(947): W1057 Implicit string cast from 'AnsiString' to 'string'
[dcc32 Warning] ACBrUtil.pas(950): W1057 Implicit string cast from 'AnsiString' to 'string'
[dcc32 Warning] ACBrUtil.pas(951): W1057 Implicit string cast from 'AnsiString' to 'string'
[dcc32 Warning] ACBrUtil.pas(961): W1057 Implicit string cast from 'AnsiString' to 'string'
[dcc32 Warning] ACBrUtil.pas(965): W1057 Implicit string cast from 'AnsiString' to 'string'
[dcc32 Warning] ACBrUtil.pas(965): W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString'
[dcc32 Warning] ACBrUtil.pas(1572): W1050 WideChar reduced to byte char in set expressions.  Consider using 'CharInSet' function in 'SysUtils' unit.
[dcc32 Warning] ACBrUtil.pas(1581): W1050 WideChar reduced to byte char in set expressions.  Consider using 'CharInSet' function in 'SysUtils' unit.
[dcc32 Warning] ACBrUtil.pas(1598): W1050 WideChar reduced to byte char in set expressions.  Consider using 'CharInSet' function in 'SysUtils' unit.
[dcc32 Warning] ACBrUtil.pas(1660): W1050 WideChar reduced to byte char in set expressions.  Consider using 'CharInSet' function in 'SysUtils' unit.
[dcc32 Warning] ACBrUtil.pas(1870): W1057 Implicit string cast from 'AnsiString' to 'string'
[dcc32 Warning] ACBrUtil.pas(1870): W1057 Implicit string cast from 'AnsiString' to 'string'
[dcc32 Warning] ACBrUtil.pas(1871): W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString'
[dcc32 Warning] ACBrUtil.pas(1898): W1057 Implicit string cast from 'AnsiString' to 'string'
[dcc32 Warning] ACBrUtil.pas(1898): W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString'
[dcc32 Warning] ACBrUtil.pas(1924): W1057 Implicit string cast from 'AnsiString' to 'string'
[dcc32 Warning] ACBrUtil.pas(1942): W1057 Implicit string cast from 'AnsiString' to 'string'
[dcc32 Warning] ACBrUtil.pas(1942): W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString'
[dcc32 Warning] ACBrUtil.pas(1970): W1057 Implicit string cast from 'AnsiString' to 'string'
[dcc32 Warning] ACBrUtil.pas(1986): W1057 Implicit string cast from 'AnsiString' to 'string'
[dcc32 Warning] ACBrUtil.pas(2010): W1057 Implicit string cast from 'AnsiString' to 'string'
[dcc32 Warning] ACBrUtil.pas(2010): W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString'
[dcc32 Warning] ACBrUtil.pas(2826): W1057 Implicit string cast from 'AnsiString' to 'string'
[dcc32 Warning] ACBrUtil.pas(2862): W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString'
[dcc32 Warning] ACBrUtil.pas(2946): W1050 WideChar reduced to byte char in set expressions.  Consider using 'CharInSet' function in 'SysUtils' unit.
[dcc32 Warning] ACBrUtil.pas(2954): W1050 WideChar reduced to byte char in set expressions.  Consider using 'CharInSet' function in 'SysUtils' unit.
[dcc32 Hint] ACBrUtil.pas(3224): H2077 Value assigned to 'PosIni' never used
[dcc32 Warning] ACBrUtil.pas(3320): W1057 Implicit string cast from 'AnsiString' to 'string'
[dcc32 Warning] ACBrUtil.pas(3436): W1050 WideChar reduced to byte char in set expressions.  Consider using 'CharInSet' function in 'SysUtils' unit.
[dcc32 Hint] ACBrPAFClass.pas(76): H2219 Private symbol 'Insert' declared but never used

No exemplo acima é apenas uma parte, em alguns projetos chego ter acima de 2 mil avisos desses.

Sei que a IDE faz o cast forçado, mas no entanto isso para um controle do código final fica muito mais limpo e de fácil manutenção.

Não fiz nenhuma alteração ainda pois depende da abordagem e da importância que os cordeadores e mantenedores das units tomarão.

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Já é de nosso conhecimento que o ACBr produz muito mais Warnings e Hints que deveria. Mas precisamos de voluntários para ajudar nisso.

Relacionado:

 

 

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

 

 

EMBarbosa

 

Qual a melhor abordagem?

Teremos um trunk3?

Vou iniciar por units com esse tipo de hint:

[dcc32 Hint] ACBrUtil.pas(3224): H2077 Value assigned to 'PosIni' never used;

Nesse outro tipo:

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

Podemos mudar o tipo para string pois cada IDE usa conforme precisa e usar AnsiString só nos casos bem específicos!

 

Editado por Waldir Paim
Melhor formatação.
Link para o comentário
Compartilhar em outros sites

  • Fundadores

Para essa reforma, não faz sentido considerar os Warnings de D7 ou IDEs sem suporte a UTF8/Unicode

Lembrem-se de sempre testar a compilação no Lazarus/FPC

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
1 hora atrás, Waldir Paim disse:

 

Qual a melhor abordagem?

Teremos um trunk3?

Não por agora.

1 hora atrás, Waldir Paim disse:

Vou iniciar por units com esse tipo de hint:

[dcc32 Hint] ACBrUtil.pas(3224): H2077 Value assigned to 'PosIni' never used

Daí você pode anexar as units alteradas para teste.

 

1 hora atrás, Waldir Paim disse:

Nesse outro tipo:

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

Podemos mudar o tipo para string pois cada IDE usa conforme precisa e usar AnsiString só nos casos bem específicos!

Tome cuidado pois principalmente os componentes da paleta ACBrSerial fazem uso de comunicação serial e usam AnsiString no lugar de um Array of Bytes.

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

Vamos fazer unit a unit para evitar qualquer tipo de surpresa.

Citar

Para essa reforma, não faz sentido considerar os Warnings de D7 ou IDEs sem suporte a UTF8/Unicode

Citei o exemplo para mostrar o tamanho do problema nas IDEs mais novas.

Citar

Lembrem-se de sempre testar a compilação no Lazarus/FPC

Sem problemas.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Na medida do possível e para garantir que as alterações não gerem efeitos colaterais vou criando os Teste Case e enviar junto com as units.

Dessa forma os usuários  das diversas IDEs e plataforma atendidas pode ajudar e rodar os testes.

Vou me focar nesse momento na unit ACBrUtil.pas para iniciar essa tarefa.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

 

Citar

Repare que já existe uma pasta "Testes", com vários teste cases para DUNIT e FPCUnit

Daniel,

Vou usar os testes existentes e na medida do possível acrescentar o que falta.

Eu tentei compilar os testes no Sealte e eles não rodaram, acredito que vai ser preciso alguma alteração.

Nos fontes:

Fiz umas alterações que já removem uma pequena parte dos hints e acredito que não quebrem o código existente.

No código em si alterei muito pouca coisa, só na ACBrUtil.pas a remoção de atribuição de valores que o compilador disse que não estava sendo usado.

Nas units do ACBrBoleto inclui no Uses a unit Contnrs que essas IDEs mais novas pedem para incluir.

Nas units do Sped só inclui alguns override que a IDE pediu.

ACBrBancoCaixaSICOB.pas

ACBrBancoSantander.pas

ACBrBancoCaixa.pas

ACBrBancoSicredi.pas

ACBrBancoItau.pas

ACBrBancoBrasil.pas

ACBrUtil.pas

ACBrEFDBloco_0.pas

ACBrSpedFiscal.pas

ACBrEFDBloco_K_Class.pas

ACBrEFDBloco_H_Class.pas

ACBrEFDBloco_G_Class.pas

ACBrEFDBloco_D_Class.pas

ACBrEFDBloco_C_Class.pas

ACBrEFDBloco_9_Class.pas

ACBrEFDBloco_1_Class.pas

ACBrEFDBloco_0_Class.pas

ACBrEFDBloco_E_Class.pas

ACBrEPCBloco_0.pas

ACBrEPCBloco_M.pas

ACBrEPCBloco_I_Class.pas

ACBrEPCBloco_P_Class.pas

ACBrEPCBloco_F_Class.pas

ACBrEPCBloco_D_Class.pas

ACBrEPCBloco_A_Class.pas

ACBrEPCBloco_9_Class.pas

ACBrEPCBloco_1_Class.pas

ACBrEPCBloco_M_Class.pas

ACBrEPCBloco_0_Class.pas

ACBrEPCBloco_C.pas

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Será que podemos adotar esses casts nas strings ou alguem quer sugerir mais alguma solução?

Delphi Unicode – entendo os avisos (warning) do compilar sua aplicação

Estou migrando a  CharInSet para dentro do ACBrUtil.pas;

 

{$IFNDEF COMPILER12_UP}
 function CharInSet(C: AnsiChar; const CharSet: TSysCharSet): Boolean;
{$ENDIF}

Dessa forma uma parte do hints a gente mata com essa função também.

Fico no aguardo da definição sobre os casts nas strings.

 

Nas untis do ACBrBoleto temos essa situação!

Citar

   if copy(Linha, 14, 1) = 'T' then // se for segmento T cria um novo titulo
       Titulo := ACBrBanco.ACBrBoleto.CriarTituloNaLista;

      with Titulo do
     begin
       if copy(Linha, 14, 1) = 'T' then
       begin
         SeuNumero       := copy(Linha, 106, 25);

No treco acima ele reclama que a variável Titulo não foi inicializada.

Pretendo mudar para:

Citar

    Titulo  := nil;

     if copy(Linha, 14, 1) = 'T' then // se for segmento T cria um novo titulo
       Titulo := ACBrBanco.ACBrBoleto.CriarTituloNaLista;

    if Assigned(Titulo ) then

    with Titulo do
     begin
       if copy(Linha, 14, 1) = 'T' then
       begin
         SeuNumero       := copy(Linha, 106, 25);

Dessa forma ele para de reclamar e se não instanciar ele também não gera um AV.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

A modificação está correta... (o código não estava escrito de uma maneira segura)

Vou analisar as Units anexadas... e testar no Lazarus...

 

TSysCharSet, existirá nas versões inferiores a COMPILER12_UP ?

Não vejo como adicionar esse método irá remover warnings, afinal nas versões antigas ele não existe e a IDE não reclama...

os Hints/Warnings ocorrem nas novas IDEs onde já existe o método: CharInSet e ele não está sendo usado..

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

Na unit SysUtils;

do Delphi 7 tem sim.

Citar


type

{ Standard Character set type }

  TSysCharSet = set of Char;
 

Em IDEs inferior D7 da para fazer igual foi feito em ACBrUtil :


{ PosEx, retirada de StrUtils.pas do D7, para compatibilizar com o Delphi 6
  (que nao possui essa funçao) }
{$IFNDEF COMPILER7_UP}
function PosEx(const SubStr, S: AnsiString; Offset: Cardinal = 1): Integer;
{$ENDIF}

 

Citar

Não vejo como adicionar esse método irá remover warnings, afinal nas versões antigas ele não existe e a IDE não reclama...

os Hints/Warnings ocorrem nas novas IDEs onde já existe o método: CharInSet e ele não está sendo usado..

Daniel, a inclusão da função em si realmente não remove, mas podemos mudar essas funções:

De: 

{-----------------------------------------------------------------------------
 *** Extraido de JclStrings.pas  - Project JEDI Code Library (JCL) ***
  Retorna <True> se <C> é Alpha maiusculo/minusculo 
 ---------------------------------------------------------------------------- }
function CharIsAlpha(const C: Char): Boolean;
begin
  Result := ( C in ['A'..'Z','a'..'z'] ) ;
end ;

{-----------------------------------------------------------------------------
 *** Extraido de JclStrings.pas  - Project JEDI Code Library (JCL) ***
  Retorna <True> se <C> é Númerico 
 ---------------------------------------------------------------------------- }
function CharIsNum(const C: Char): Boolean;
begin
  Result := ( C in ['0'..'9'] ) ;
end ;

{-----------------------------------------------------------------------------
 *** Extraido de JclStrings.pas  - Project JEDI Code Library (JCL) ***
  Retorna <True> se <C> é Alpha maiusculo/minusculo ou Numerico
 ---------------------------------------------------------------------------- }
function CharIsAlphaNum(const C: Char): Boolean;
begin
  Result := ( CharIsAlpha( C ) or CharIsNum( C ) );
end ;

{-----------------------------------------------------------------------------
  Retorna <True> se <C> é um char hexa válido
 ---------------------------------------------------------------------------- }
function CharIsHexa(const C: Char): Boolean;
begin
  Result := ( C in ['0'..'9','A'..'F','a'..'f'] ) ;
end;

 Para: 

{-----------------------------------------------------------------------------
 *** Extraido de JclStrings.pas  - Project JEDI Code Library (JCL) ***
  Retorna <True> se <C> é Alpha maiusculo/minusculo 
 ---------------------------------------------------------------------------- }
function CharIsAlpha(const C: Char): Boolean;
begin
  Result := CharInSet(C, ['A'..'Z','a'..'z'] ) ;
end ;

{-----------------------------------------------------------------------------
 *** Extraido de JclStrings.pas  - Project JEDI Code Library (JCL) ***
  Retorna <True> se <C> é Númerico 
 ---------------------------------------------------------------------------- }
function CharIsNum(const C: Char): Boolean;
begin
  Result := CharInSet( C, ['0'..'9'] ) ;
end ;

{-----------------------------------------------------------------------------
 *** Extraido de JclStrings.pas  - Project JEDI Code Library (JCL) ***
  Retorna <True> se <C> é Alpha maiusculo/minusculo ou Numerico
 ---------------------------------------------------------------------------- }
function CharIsAlphaNum(const C: Char): Boolean;
begin
  Result := ( CharIsAlpha( C ) or CharIsNum( C ) );
end ;

{-----------------------------------------------------------------------------
  Retorna <True> se <C> é um char hexa válido
 ---------------------------------------------------------------------------- }
function CharIsHexa(const C: Char): Boolean;
begin
  Result := CharInSet( C , ['0'..'9','A'..'F','a'..'f'] ) ;
end;

Alem de que já vi dentro de outras Units o $IFDEF para utilizar a função sitada.

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Essa mudança pode quebrar a compilação do Lazarus... (que também não contém o método "CharInSet")

Por favor poste sua sugestão de correção para a ACBrUtil que faço alguns testes...

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

Eu acho que tem sim:

Citar

    Copyright (C) 2002 by Florian Klaempfl

    See the file COPYING.FPC, included in this distribution,
    for details about the copyright.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    *********************************************************************
}

function Trim(const S: widestring): widestring;
function TrimLeft(const S: widestring): widestring;
function TrimRight(const S: widestring): widestring;

function WideUpperCase(const s : WideString) : WideString;{$ifdef SYSUTILSINLINE}inline;{$endif}
function WideLowerCase(const s : WideString) : WideString;{$ifdef SYSUTILSINLINE}inline;{$endif}
function WideCompareStr(const s1, s2 : WideString) : PtrInt;{$ifdef SYSUTILSINLINE}inline;{$endif}
function WideSameStr(const s1, s2 : WideString) : Boolean;{$ifdef SYSUTILSINLINE}inline;{$endif}
function WideCompareText(const s1, s2 : WideString) : PtrInt;{$ifdef SYSUTILSINLINE}inline;{$endif}
function WideSameText(const s1, s2 : WideString) : Boolean;{$ifdef SYSUTILSINLINE}inline;{$endif}

Function WideFormat (Const Fmt : WideString; const Args : Array of const) : WideString;
Function WideFormat (Const Fmt : WideString; const Args : Array of const; Const FormatSettings: TFormatSettings) : WideString;
Function WideFormatBuf (Var Buffer; BufLen : Cardinal; Const Fmt; fmtLen : Cardinal; Const Args : Array of const) : Cardinal;
Function WideFormatBuf (Var Buffer; BufLen : Cardinal; Const Fmt; fmtLen : Cardinal; Const Args : Array of const; Const FormatSettings: TFormatSettings) : Cardinal;
Procedure WideFmtStr(Var Res: WideString; Const Fmt : WideString; Const args: Array of const);
Procedure WideFmtStr(Var Res: WideString; Const Fmt : WideString; Const args: Array of const; Const FormatSettings: TFormatSettings);

function StrLen(p: pwidechar): sizeint; external name 'FPC_PWIDECHAR_LENGTH'; overload;

function StrCopy(Dest, Source: PWideChar): PWideChar; overload;
function StrLCopy(Dest,Source: PWideChar; MaxLen: SizeInt): PWideChar; overload;
Function CharInSet(Ch:WideChar;Const CSet : TSysCharSet) : Boolean;   <<<<<<aqui
function WideStringReplace(const S, OldPattern, NewPattern: WideString;  Flags: TReplaceFlags): WideString;                 

 

Segue unit ACBrUtil.pas alterada.

ACBrUtil.pas

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Só existe na versão 3 do FPC... mas não vejo problema em implementá-la no ACBrUtil com IFDEFs

Function CharInSet(Ch:AnsiChar;Const CSet : TSysCharSet) : Boolean; inline;
begin
  result:=ch in CSet;
end;

Estou aplicando várias modificações na ACBrUtil e Fortes Report CE, para compatibilizar com o FPC 3.0.0

Após terminar isso, faço o merge com as suas modificações

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
19 horas atrás, Waldir Paim disse:

 

Daniel,

Vou usar os testes existentes e na medida do possível acrescentar o que falta.

Eu tentei compilar os testes no Sealte e eles não rodaram, acredito que vai ser preciso alguma alteração.

Waldir,

   crie um novo tópico sobre os problemas que encontrou com os testes unitários existentes. A gente pode tentar verificar isso primeiro.

Seria muito melhor ter os testes funcionando antes de fazer essas alterações.

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

EMBarbosa,

Acredito que entendi o motivo do erro!

Antes faltava o DUnit, baixei ele nesse link https://sourceforge.net/projects/dunit/

No D7 rodou 100%.

Mas como disse no Sealte apresenta alguns erros;

Veja:

Nesse trecho da unit GUITestRunner.


procedure TGUITestRunner.FormCreate(Sender: TObject);
begin
  inherited;
  FTests := TInterfaceList.Create;
  LoadConfiguration;

  TimeSeparator := ':';
  SetUpStateImages;
  SetupCustomShortcuts;
  TestTree.Items.Clear;
  EnableUI(false);
  ClearFailureMessage;
  FUpdateTimer := TTimer.Create(Self);
  FUpdateTimer.Interval := 200;
  FUpdateTimer.Enabled := False;
  FUpdateTimer.OnTimer := OnUpdateTimer;
  Setup;

  {$IFDEF VER180} //FastMM built in already
    FailTestCaseIfMemoryLeakedAction.Enabled := True;
    ReportMemoryLeaksOnShutdown := ReportMemoryLeakTypeOnShutdownAction.Checked;
  {$ELSE}

Apresenta esse erro:

Citar

[dcc32 Warning] TestFramework.pas(2817): W1057 Implicit string cast from 'AnsiString' to 'string'
[dcc32 Error] GUITestRunner.pas(1237): E2003 Undeclared identifier: 'TimeSeparator'
[dcc32 Fatal Error] ACBrComumTestCases.dpr(20): F2063 Could not compile used unit 'GUITestRunner.pas'
Failed

O Sealte tem embutido o DUnit e acredito que alguns $IFDEFs devem resolve.

 

Vou reservar um tempo e ver se consigo fazer os Testes rodar no Sealte usando o DUnit nativo.

Se conseguir crio o outro tópico para tratar desse assunto.

Link para o comentário
Compartilhar em outros sites

  • Consultores
10 horas atrás, Waldir Paim disse:

[dcc32 Error] GUITestRunner.pas(1237): E2003 Undeclared identifier: 'TimeSeparator'

http://docwiki.embarcadero.com/RADStudio/XE8/en/Global_Variables

http://stackoverflow.com/q/25109497/460775

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

  • Fundadores

Mas acho que esse erro ocorre na DUnit que está no Sourceforge, nas novas IDEs do Delphi... no XE7 tb esbarrei nesse erro...

Depois que removi a DUnit do SourceForge e passei a usar a DUNIT que vem no XE7, funcionou a contento...

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

Enviei para o SVN, as modificações que eu tinha para a ACBrUtil.pas... e já inseri a "CharInSet"...

Poderia por favor reavaliar as suas modificações, nessa nova versão da ACBrUtil ?  Obrigado pela ajuda...

Em 01/03/2016 at 18:34, Waldir Paim disse:

Nas units do ACBrBoleto inclui no Uses a unit Contnrs que essas IDEs mais novas pedem para incluir.

Porque isso é necessário ?  Qual método não é encontrado ? Como aparece a "Warning" a respeito dessa Unit ?

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

Aqui rodou sem problemas.

Aproveitei e já inclui mais algumas unit que faltaram.

Junto compactei a pasta com as units alteradas.

Na ACBrUtil.pas utilizei a CharInSet, fiz isso nas outras também.

Na unit ACBrEPCBloco_C_Class ainda passou uma procedure LimpaRegistros; override;

Na unit ACBrCMC7.pas publiquei a function CalcDigitoCMC7 e usei CharInSet.

Na unit ACBrValidador.pas publiquei a function MascaraIE e usei CharInSet.

Tirando essas mensagem ficam praticamente as mensagens W1058 e W1057 que ainda precisamos definir qual será o tratamento e muito poucas das Units do ACBrBoleto que indicam outros tratamentos.

Fontes.zip

ACBrUtil.pas

ACBrDFeCapicomDelphiSoap.pas

ACBrDFeOpenSSL.pas

ACBrCMC7.pas

ACBrValidador.pas

ACBrDevice.pas

ACBrSocket.pas

ACBrEPCBloco_C_Class.pas

pcnAuxiliar.pas

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

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