Na realidade vc não colocava os dados do temporário no result, e sim 
passava o temporário para ele, e como vc destruia o temporário se perdia o 
vinculo ...

     

 GYNCOWBOY 
 André Luis da Silveira


----- Mensagem original ----
De: Ricardo César Cardoso <[EMAIL PROTECTED]>
Para: [email protected]
Enviadas: Quinta-feira, 20 de Setembro de 2007 9:09:53
Assunto: [delphi-br] Duvida ao trabalhar com TStringList









  


    
            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_Velocida de_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.conPowerC alcXPLite;



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_Velocida de_Corte( var aMatEspecificacao,

 aDimensao: String): TStringList;

 Var

   aSQLQuery : TSQLQuery;

  

 Begin



aSQLQuery := TSQLQuery.Create( nil);



with aSQLQuery do

   begin

     SQLConnection := dmConexao.conPowerC alcXPLite;



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]





    
  

    
    




<!--

#ygrp-mkp{
border:1px solid #d8d8d8;font-family:Arial;margin:14px 0px;padding:0px 14px;}
#ygrp-mkp hr{
border:1px solid #d8d8d8;}
#ygrp-mkp #hd{
color:#628c2a;font-size:85%;font-weight:bold;line-height:122%;margin:10px 0px;}
#ygrp-mkp #ads{
margin-bottom:10px;}
#ygrp-mkp .ad{
padding:0 0;}
#ygrp-mkp .ad a{
color:#0000ff;text-decoration:none;}
-->



<!--

#ygrp-sponsor #ygrp-lc{
font-family:Arial;}
#ygrp-sponsor #ygrp-lc #hd{
margin:10px 0px;font-weight:bold;font-size:78%;line-height:122%;}
#ygrp-sponsor #ygrp-lc .ad{
margin-bottom:10px;padding:0 0;}
-->



<!--

#ygrp-mlmsg {font-size:13px;font-family:arial, helvetica, clean, sans-serif;}
#ygrp-mlmsg table {font-size:inherit;font:100%;}
#ygrp-mlmsg select, input, textarea {font:99% arial, helvetica, clean, 
sans-serif;}
#ygrp-mlmsg pre, code {font:115% monospace;}
#ygrp-mlmsg * {line-height:1.22em;}
#ygrp-text{
font-family:Georgia;
}
#ygrp-text p{
margin:0 0 1em 0;}
#ygrp-tpmsgs{
font-family:Arial;
clear:both;}
#ygrp-vitnav{
padding-top:10px;font-family:Verdana;font-size:77%;margin:0;}
#ygrp-vitnav a{
padding:0 1px;}
#ygrp-actbar{
clear:both;margin:25px 0;white-space:nowrap;color:#666;text-align:right;}
#ygrp-actbar .left{
float:left;white-space:nowrap;}
.bld{font-weight:bold;}
#ygrp-grft{
font-family:Verdana;font-size:77%;padding:15px 0;}
#ygrp-ft{
font-family:verdana;font-size:77%;border-top:1px solid #666;
padding:5px 0;
}
#ygrp-mlmsg #logo{
padding-bottom:10px;}

#ygrp-vital{
background-color:#e0ecee;margin-bottom:20px;padding:2px 0 8px 8px;}
#ygrp-vital #vithd{
font-size:77%;font-family:Verdana;font-weight:bold;color:#333;text-transform:uppercase;}
#ygrp-vital ul{
padding:0;margin:2px 0;}
#ygrp-vital ul li{
list-style-type:none;clear:both;border:1px solid #e0ecee;
}
#ygrp-vital ul li .ct{
font-weight:bold;color:#ff7900;float:right;width:2em;text-align:right;padding-right:.5em;}
#ygrp-vital ul li .cat{
font-weight:bold;}
#ygrp-vital a{
text-decoration:none;}

#ygrp-vital a:hover{
text-decoration:underline;}

#ygrp-sponsor #hd{
color:#999;font-size:77%;}
#ygrp-sponsor #ov{
padding:6px 13px;background-color:#e0ecee;margin-bottom:20px;}
#ygrp-sponsor #ov ul{
padding:0 0 0 8px;margin:0;}
#ygrp-sponsor #ov li{
list-style-type:square;padding:6px 0;font-size:77%;}
#ygrp-sponsor #ov li a{
text-decoration:none;font-size:130%;}
#ygrp-sponsor #nc{
background-color:#eee;margin-bottom:20px;padding:0 8px;}
#ygrp-sponsor .ad{
padding:8px 0;}
#ygrp-sponsor .ad #hd1{
font-family:Arial;font-weight:bold;color:#628c2a;font-size:100%;line-height:122%;}
#ygrp-sponsor .ad a{
text-decoration:none;}
#ygrp-sponsor .ad a:hover{
text-decoration:underline;}
#ygrp-sponsor .ad p{
margin:0;}
o{font-size:0;}
.MsoNormal{
margin:0 0 0 0;}
#ygrp-text tt{
font-size:120%;}
blockquote{margin:0 0 0 4px;}
.replbq{margin:4;}
-->








      Flickr agora em português. Você clica, todo mundo vê.
http://www.flickr.com.br/

[As partes desta mensagem que não continham texto foram removidas]

Responder a