Olá João e obrigado pela resposta.

Na verdade eu uso o que chamei de SLFinal "externamente" ou seja, a função 
"Seleciona_Velocidade_Corte" alimenta o SLFinal e depois de alimentado, eu uso 
dois itens desse SLFinal como base pra cálculo em outros pontos do código da 
procedure onde ele foi inserido (evento OnClick de um botão). Essa função 
seleciona vários parametros pertinentes ao cálculo, mas ao invés de fazer 
várias funções menores para pegar os parâmetros, fiz uma unica função que me 
tras todos os parametros que preciso e populo o TStringList. Depois uso esse 
conteúdo do TStringList como for necessário.

Segue o código editado de Seleciona_Velocidade_Corte:

/************************/

Function Selecionar_Velocidade_Corte(var aMatEspecificacao,
 aDimensao: String): TStringList;
 Var
   aSQLQuery : TSQLQuery;

 Begin

   aSQLQuery := TSQLQuery.Create(nil);


   with aSQLQuery do
   begin
     SQLConnection := dmConexao.conConexao;

     with SQL do
     begin

    // Instruções SQL de consulta para popular o Result
    // Essa instrução retorna um único registro, cujos 
    // Campos alimentam o TStringList

     end;

     Params[0].AsString := aMatEspecificacao;
     Params[1].AsFloat  := StrToFloat(aDimensao);

     Open;

     Result := TStringList.Create;
       with Result do
       begin
         Add(Fields[0].AsString);
         Add(Fields[1].AsString);
         Add(Fields[2].AsString);
         Add(Fields[3].AsString);
         Add(Fields[4].AsString);
         Add(Fields[5].AsString);
         Add(Fields[6].AsString);
       end;


   end;

   aSQLQuery.Free;

 End;

/************************/

Então aliado a esta função tenho o código  que demonstrei na mensagem anterior:

/***********************/
Var
  SLFinal : TStringList;
  Especificacao : String;
  Dimensao : Real;
  VC_Maximo : Real;
  VC_Minimo : Real;
  Area_Corte : Real;
Begin
  SLFinal := TStringList.Create;
  
  { bloco de comandos }
 
  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]);
  {finalização}
  SLFinal.Free;

End;
/***********************/

Não sei se compliquei ainda mais, mas estou usando exatamente desta maneira 
como descrevi. Aparentemente funciona, mas como vcs reportaram que não é uma 
boa prática, gostaria de saber como seria o correto e assim melhorar este 
código.

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