Valdemir, se você prefere jogar os dados num ClientDataset para depois
passar para um TXT, não precisa acumular todos os dados no
ClientDataset para só no final gravar no TXT. Faça isso registro a
registro, assim você só manterá em memória um registro por vez.


--
Dirlei Dionísio
http://MaisQueBomCodigo.blogspot.com



Em 15 de julho de 2010 18:19, Fabricio Colombo
<fabricio.colombo....@gmail.com> escreveu:
> Eu já tive problemas utilizando TClientDataSet em memória parecido com isso
> devido a grande quantidade de registros, sem falar no desempenho deplorável.
> Agora utilizo um componente da devart chamado VirtualTable que vem junto com
> o ODAC da devart,  mais é pago. Se não me engano, o JEDI VCl tem um
> componente chamado TJvMemoryTable, nunca usei, mais acredito ser mais
> otimizado.
>
> Em 15 de julho de 2010 18:08, Valdemir (yahoo)
> <valdemi...@yahoo.com.br>escreveu:
>
>>
>>
>> Pessoal estou montando uma rotina para gerar o sped, em um movimento
>> pequeno ok a rotina roda legal, mas em um movimento grande ao dar insert no
>> CDS da erro Out Of Memory, apos processar um grande numero de registros
>>
>> Eu tenho um CDS onde vou armazenando os dados, para depois fazer um loop e
>> jogar no TXT, para mim foi a saída mais fácil que eu encontrei, primeiro
>> leio as tabelas e jogo no CDS, ai no CDS já com os dados no formato do
>> governo, faço um loop no cds e gravo para o txt
>>
>> A principio estava usando um CDS em memoria, e ai é logico que deu o erro,
>> mas ao preencher a propriedade FileName com o nome do arquivo ... ele
>> começou a gerar os dados em arquivo binário, até ai ok, mas não encontrei
>> nenhuma propriedade que eu informo que ele descarregue da memoria ram a cada
>> x registros, então mesmo informado a propriedade nome do arquivo .. ele cria
>> um arquivo.. e começa o processo, mas o tamanho fica com 0 até dar out of
>> memory, e ai o tamanho do arquivo salta de 0 para um numero em bytes que ele
>> conseguiu gerar
>>
>> Da a entender que mesmo informando o FileName, ele continua trabalhando
>> somente com memoria ram, e só descarrega ela.. quando da o erro, eu imaginei
>> que como esta informado o nome do arquivo, ele automaticamente ao carregar a
>> RAM iria salvar os dados em disco, procurei no help mas não encontrei nenhum
>> método ou propriedade para isso, antigamente no bde existia uma api para
>> isso, mas no ClientDataSet eu não encontrei
>>
>> Alguém faz idéia do que possa estar ocorrendo ?
>>
>> Obrigado
>> Valdemir
>>
>> [As partes desta mensagem que não continham texto foram removidas]
>>
>>
>>
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
> ------------------------------------
>
> --
> <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
>
>
>
>

Responder a