Arquivos de texto muito grande - out of memory -

Delphi

20/08/2013

Há algum tempo precisa de um código para ler um arquivo sped com aproximadamente 5 milhoes de linhas era um arquivo de 260 MB aproximadamente, um SPED CONTRIBUIÇÕES.

Utilizei a seguinte dica pra dar a leitura e obtive o resultado esperado:

http://www.scriptbrasil.com.br/forum/topic/167200-abrir-arquivo-texto-muito-grande/


Hoje estou com um Contábil de 696 Mb, ele tem mais de 6 milhoes de linhas e o código um dia funcional, para este caso n funciona, ocorre o out of memory novamente...


Como os colegas estão trabalhando para ler estes arquivos do sped, estes arquivos podem ser cada vez maiores...


Eu precisava abrir o arquivo como aquele programa antigo
Large Text File....

* Este arquivo não eh aberto nem com o Notepad++
_________________
Rod

Rod

Curtidas 0

Respostas

Rod

Rod

20/08/2013

--up--
GOSTEI 0
Deivison Melo

Deivison Melo

20/08/2013

Bom dia,

Para resolver o problema de Out of Memory no Delphi precisa trocar o arquivo "RLINK32.dll" que se encontra na pasta C:\Arquivos de programas\Borland\Delphi7\Bin por uma versão mais atualizada desta mesma DLL. (Vou recomendar o básico aqui que seria o backup antes, para que caso houver problemas, voltarmos o backup).

Obs: Esta solução foi testada e funcionou para Delphi 6, ele apenas diminuiu na época a frequência que isso ocorria.

Trabalhei em uma empresa que isso ocorria todo dia, com todos os colaboradores e em muitas vezes mais de uma vez no dia com cada colaborador.

Eu já sabia do controle de memória criado para o BDS 2006 (delphi 2006), por tanto falar a empresa optou por comprar a versão oficial do delphi 2007
(que era o mais novo na época) então migramos inicialmente esse sistema que mais ocorria isso, depois todos os outros, então para nossa surpresa
o cara se garantia no que estava proposto a fazer, pois o problema não mais ocorreu...

Imagino que você esteja usando muitos componentes visuais e também ter muitos componentes em seu sistema, deixando o executável até um pouco
grande e quando o delphi vai compilar o cara, ele acaba não fazendo o controle de memória e o devido balanceamento para evitar problemas dessa natureza
e o sistema operacional acaba não aguentando gerenciar isso com o Delphi e então ocorre o problema.

Passe a utilizar ferramentas que te ajudem em produtividade e de alguma forma evite problemas dessa natureza, passe a observar as melhores práticas de programação e
usar componentes que te auxiliem nessa tarefa como: FastMM, DUnit, Code Site e outra infinidade...

Abração e bons códigos!!

Qualquer anormalidade estou á disposição!
GOSTEI 0
Rod

Rod

20/08/2013

uso o XE2, nao eh rlink32.

este erro dela realmente ocorria nos delphi 6,7 ate o 2007 se nao me engano..
GOSTEI 0
Rod

Rod

20/08/2013

Resulmindo funcionou para abrir um arquivo com mais de 6 milhoes de linhas.

Pessoal da um olhada no código que funcionou rss.

//FArq : TStrings;
TECDContabil.GetOpen;
var
arqTxt : TextFile;
sLinha: String;
begin
AssignFile ( arqTxt, FPathArq + FNomeArq);
Reset (arqTxt);
if FArq = nil then
FArq := TStringList.Create
else
FArq.Clear;
FArq.BeginUpdate;
while not Eof ( arqTxt ) do
begin
ReadLn ( arqTxt, sLinha );
FArq.Add(sLinha);
end;
CloseFile ( arqTxt );
FArq.EndUpdate;
end;


Vou dar como resolvido por hora o problema.

Obrigado a todos.
GOSTEI 0
Deivison Melo

Deivison Melo

20/08/2013

Esse erro ocorre no XE 2?

Detalha aí por favor!!

GOSTEI 0
Deivison Melo

Deivison Melo

20/08/2013

Ok, amigo...

Qualquer dúvida estamos a disposição!

Abração e bons códigos!!!
GOSTEI 0
Rod

Rod

20/08/2013

este erro de rlink32, NÃO ocorre no XE2, eh um erro de versoes anteriores.
GOSTEI 0
POSTAR