Ricardo César Cardoso wrote:
> Bom dia João!

Bom dia Ricardo,

> Na verdade o StringList "Final" (o que é alimentado pela função
> "Seleciona_Velocidade_Corte") serve apenas como um "container"
> de dados que serão utilizados depois em alguns cálculos, mas num
> primeiro momento apenas dois itens desse TStringList me interessam,
> os itens 5 e 6.
> 
> O correto seria criar classes mais específicas para a minha situação,
> mas tenho que testar a lógica da aplicação antes, gostaria de fazer
> algo mais simples, usando as classes do Delphi antes de criar classes
> de negócio

Não necessariamente. As classes do Delphi servem muito bem como 
containeres genéricos. Se você precisar guardar esta lista para outros 
processamentos futuros, então sim, um container personalizado por você 
pode ser bem útil. Só tenho algumas dúvidas no seu código:

> /******************************/
> Var
>   SLFinal : TStringList;
>   Especificacao : String;
>   Dimensao : Real;
>   VC_Maximo : Real;
>   VC_Minimo : Real;
>   Area_Corte : Real;
> Begin
>   SLFinal := TStringList.Create;
> 
>   { bloco de comandos }

Para que você usa SLFinal? Você destroi ou copia a string list dentro do 
bloco acima?

>   SLFinal := Seleciona_Velocidade_Corte(Especificacao, Dimensao);
> 
>   { bloco de comandos }
>   
>   VC_Maximo := Area_Corte / StrToFloat(SLFinal.Strings[5]);
>   VC_Minimo := Area_Corte / StrToFloat(SLFinal.Strings[6]);

Faltou destruir a string list antes de terminar a rotina, ou faltou 
copiá-la para um membro da classe.

Se você cria a string list especialmente para fazer o cálculo e depois 
ela é destruida, a minha recomendação é você implementar assim:

SLFinal := TStringList.Create;
try
   // comandos
   Seleciona_Velocidade(SLFinal, Especificacao, Dimensao);
   VC_Maximo := Area_Corte / StrToFloat(SLFinal.Strings[5]);
   VC_Minimo := Area_Corte / StrToFloat(SLFinal.Strings[6]);
finally
   SLFinal.Free;
end;

Se você utilizar a string list fora desta rotina, então a recomendação é 
a seguinte:

FreeAndNil(FListaFinal);
FListaFinal := CriaListaVelocidade(Especificacao, Dimensao);
VC_Maximo := Area_Corte / StrToFloat(FListaFinal.Strings[5]);
VC_Minimo := Area_Corte / StrToFloat(FListaFinal.Strings[6]);

...

destructor TSuaClasse.Destroy;
begin
   FListaFinal.Free;
   inherited;
end;

--
Joao Morais





> End;
> /******************************/
> 
> Espero ter sido mais claro agora.
> 
> Desde já grato,
> Ricardo.
> 
>        Flickr agora em português. Você clica, todo mundo vê. Saiba mais.
> 
> [As partes desta mensagem que não continham texto foram removidas]
> 
> 
> 

Responder a