Bom dia amigos da lista! Tenho uma função que, ao fornecer doi parametros, retorna o resultado para um TStringList. Não entrarei em muitos detalhes sobre a função pois acredito que sejam descartáveis. O problema que tinha era que dentro da função eu criava um TStringList temporário que capturava os dados e somente depois passava os dados para o TStringList resultado. A estrutura era a seguinte:
/**************************************/ Function Selecionar_Velocidade_Corte(var aMatEspecificacao, aDimensao: String): TStringList; Var aSQLQuery : TSQLQuery; Temp : TStringList; Begin // Cria o StringList Temporário Temp := TStringList.Create; aSQLQuery := TSQLQuery.Create(nil); with aSQLQuery do begin SQLConnection := dmConexao.conPowerCalcXPLite; with SQL do begin // Instruções de Preparação da consulta end; // Passagem de parâmetros Open; while not EOF do begin with Temp do begin // Insere os dados encontrados no StringList end; Next; end end; // Repassa os dados para o Resultado Result := Temp; aSQLQuery.Free; //Libera o StringList temporário Temp.Free; End; /**************************************/ Porém sempre que ia acessar algum item da StringList que foi preenchido pela chamada a esta função (q foi criado fora da função) eu tinha um "Access Violation". Pesquisei outros códigos que tinham conceito parecido e acabei por otimizar a função tirando o TStringList temporário. O resultado final é: /**************************************/ Function Selecionar_Velocidade_Corte(var aMatEspecificacao, aDimensao: String): TStringList; Var aSQLQuery : TSQLQuery; Begin aSQLQuery := TSQLQuery.Create(nil); with aSQLQuery do begin SQLConnection := dmConexao.conPowerCalcXPLite; with SQL do begin // Instruções de Preparação da consulta end; // Passagem de parâmetros Open; while not EOF do begin with Result do begin // Insere os dados encontrados no StringList end; Next; end end; aSQLQuery.Free; End; /**************************************/ Tudo funcionou como o esperado, mas acho que perdi alguma coisa. Alguém poderia me explicar pq não conseguia acessar o StringList usando a primeira forma da função? Desculpem o texto longo... Sds, Ricardo Flickr agora em português. Você clica, todo mundo vê. Saiba mais. [As partes desta mensagem que não continham texto foram removidas]