uso de memoria muito alto em tabela gigante
24/01/2006
0
e preciso tratar uns campos .. ex substituir as virgulas por espaço, deixar tudo em minusculo, tira acento das palavras e talz ...
isso rola normal com poucos registros mas qndo sao mtos... ixi.. quase q impossivel...
os campos sao todos do tipo MEMO ... e cada campo tem +/- uns 1300 caracteres :)
soh q qndo mando rodar esse comando... o computador fica EXTREMAMENTE LENTO ... o consumo de memoria vai la encima...
e depois de muito tempo da out of memory pra executar a função...
alguem sabe oq posso fazer pra agilizar esse processo... e fazer com q isso funcione melhor?
obrigado :P
for i:= 0 to TempTable.RecordCount-1 do begin TempTable.Edit; {substitui a virgula por espaço} x := ReplaceStr(TempTable.FieldByName(edit6.Text).AsString,´,´,´ ´); {remove os acentos das palavras e poe tudo minusculo} x := Lowercase(AnsiToAscii(x)); {insere nos registros as palavras tratadas} TempTable.FieldByName(edit6.Text).AsString := x; TempTable.Post; TempTable.Next; end;
Salsa
Posts
24/01/2006
Aroldo Zanela
O primeiro passo é substituir o FOR por um laço WHILE, pois da forma que você codificou, a cada iteração do laço o sistema tem de obter a quantidade de registro. Isto é totalmente desnecessário e degradante.
Qual é o banco de dados?
A propósito, são 2000 ou 2000000 de registros?
25/01/2006
Salsa
TempTable.First;
while TempTable.Eof do begin
mas ele nao percorre os registros pq?
25/01/2006
Salsa
entao ... ele vai percorrendo... qndo chega nos 50¬ dos registros... ele da falta de memoria....
tudo bem q ele tah fazendo varias coisas ali na funçao mas meu tah usando mto memoria.. nao tem como livrar essa memoria nao...???
*o banco q to usando eh o access
25/01/2006
Aroldo Zanela
Tem como mandar uma cópia do banco para testar aqui? (zanela_zanela@yahoo.com.br)
Clique aqui para fazer login e interagir na Comunidade :)