Ricardo César Cardoso wrote: > Não sei se o Yahoo trocou as mensagens, mas ambos funcionam. O fato é que eu > crio o StringList "final" fora das functions. Seria algo assim: > > Var > SLFinal : TStringList; > > Begin > SLFinal := TStringList.Create; > { bloco de comandos } > > SLFinal := Selecionar_Velocidade_Corte(Especificacao, Dimensao); > End; > > e antes desse código e no meu caso em outra unit está declarada a function > que cito na 1ª mensagem. > > Isso muda alguma coisa? Fiz uns testes aqui e funcionou... mas não fiz como > vc passou.
Neste caso você não está utilizando SLFinal. Esta variável está apenas recebendo um objeto, que por sinal foi destruído -- vide Temp.Free dentro da sua função. Outro problema, você criou um string list, associou ao SLFinal e perdeu a referência a ele quando fez a atribuição com o resultado da função. Em alguns pontos do código você está tratando objetos como um número ou uma ansi string. Vou citar alguns exemplos, espero não ser inconveniente com isto. VLista := TStringList.Create; Result := VLista; VLista.Free; aqui Result, bem como VLista, apontam para um objeto recém destruído e isto vai gerar um AV assim que você tentar utilizá-lo. Quando você associa uma variável a outra, você não copia informação mas apenas o endereço daonde o objeto se encontra. Outro exemplo: VLista := TStringList.Create; Result := VLista; writeln(Result.Count); // retorna 0 VLista.Add('1'); writeln(Result.Count); // retorna 1 VLista.Free; writeln(Result.Count); // AV Um último exemplo para não ficar muito xarope: VLista := TStringList.Create; VLista := ManipulaLista(Especificacao, Dimensao); Você perdeu a referência ao StringList que você criou e terá um vazamento de memória independente da forma que ManipulaLista seja implementado. Por outro lado, ManipulaLista não recebe referência alguma da sua StringList, a variável Result daquela função tem valor inicial indefinido. Se você quiser e puder detalhar melhor o que precisa ser feito, talvez saiam algumas idéias legais para a implementação. -- Joao Morais