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 <delphi-br%40yahoogrupos.com.br> [mailto: > delphi-br@yahoogrupos.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 <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]