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