Testado. Sem sucesso.

 

De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em
nome de Dirlei Dionísio
Enviada em: domingo, 2 de maio de 2010 15:20
Para: delphi-br@yahoogrupos.com.br
Assunto: Re: [delphi-br] Out off memory - Socorro

 

  

Reinaldo,

Suspeito que seu tblArtigos esteja acumulando todos os registros em memória.
Como você também carrega cada arquivo inteiro para a memória, parece que
esses dois fatores consomem todos os recursos disponíveis na RAM.

Minha sugestão é realizar a importação usando SQL num componente como o
TQuery ou... se você quiser dar uma de "Programador Cowboy", pode
simplesmente adicionar um filtro ao TTable que faça-o retornar sempre FALSE
(ex: Filter='1=2').

[ ]'s
Dirlei.

Em 2 de maio de 2010 10:26, Reinaldo Aparecido Pereira <> escreveu:

>
>
> É do tipo TTable.
>
> De: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br>
<delphi-br%40yahoogrupos.com.br> [mailto:
> delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br>
<delphi-br%40yahoogrupos.com.br>] Em nome de
> Marcos Alexandre Lemos Rodrigues
> Enviada em: sexta-feira, 30 de abril de 2010 15:38
>
> Para: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br>
<delphi-br%40yahoogrupos.com.br>
> Assunto: Re: [delphi-br] Out off memory - Socorro
>
> A tblArquivos é um tipo TTable, TQSLTable ou um ClientDataSet?
>
> Em 30 de abril de 2010 10:26, Reinaldo Aparecido Pereira > escreveu:
>
>
> >
> >
> > Amigos,
> >
> > Não entendo de gerenciamento de memória e o que tenho lido não resolveu
> meu
> > problema. Estou com a rotina abaixo que importa o conteúdo de 1000
> arquivos
> > para um banco Firebird. Lá pelo arquivo 600 a aplicação trava e dá OUT
> OFF
> > MEMORY. O executável é muito pequeno e acompanhando o processo não
parece
> > ocupar quase nada de memória.
> >
> > O que acontece afinal?
> >
> > Como posso resolver isso?
> >
> > Grato..
> >
> > for i := 0 to Arquivos.Count - 1 do
> >
> > begin
> >
> > ProgressBar1.Position := i;
> >
> > Arquivos.ItemIndex := i;
> >
> > stlArquivo.Clear;
> >
> > stlArquivo.LoadFromFile(Arquivos.Items[Arquivos.ItemIndex]);
> >
> > for x := 0 to stlArquivo.Count - 1 do
> >
> > begin
> >
> > //tblArtigos.Active := true;
> >
> > tblArtigos.Append;
> >
> > tblArtigos.FieldByName('ANO').Text := cbAno.Text;
> >
> > tblArtigos.FieldByName('NUM_LINHA').Value := x;
> >
> > tblArtigos.FieldByName('PK_ARQUIVO').Text :=
> > Trim(Arquivos.Items[Arquivos.ItemIndex]);
> >
> > tblArtigos.FieldByName('LINHA').Text :=
> > Copy(Trim(stlArquivo[x]), 0, 999);
> >
> > tblArtigos.Post;
> >
> > end;
> >
> > end;
>

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





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

Responder a