Arquivos de texto muito grande - out of memory -
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++
_________________
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
Curtidas 0
Respostas
Rod
20/08/2013
--up--
GOSTEI 0
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!
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
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..
este erro dela realmente ocorria nos delphi 6,7 ate o 2007 se nao me engano..
GOSTEI 0
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.
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
20/08/2013
Esse erro ocorre no XE 2?
Detalha aí por favor!!
Detalha aí por favor!!
GOSTEI 0
Deivison Melo
20/08/2013
Ok, amigo...
Qualquer dúvida estamos a disposição!
Abração e bons códigos!!!
Qualquer dúvida estamos a disposição!
Abração e bons códigos!!!
GOSTEI 0
Rod
20/08/2013
este erro de rlink32, NÃO ocorre no XE2, eh um erro de versoes anteriores.
GOSTEI 0