ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Liberar Memória

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
Wolver
Membro Junior
Membro Junior


Registrado: Quinta-Feira, 9 de Fevereiro de 2006
Mensagens: 343

MensagemEnviada: Ter Jul 08, 2008 1:06 pm    Assunto: Liberar Memória Responder com Citação

Estou executando uma importação de arquivo e durante o processo está ficando cada vez mais lento conforme a progressão, como faço para liberar a memória para que o processo continue com a mesma performance por todo o processo?
Crio objetos em toda a minha rotina e para liberar estou usando
try
objeto.create;
while nof eof do begin
rotina de importacao;///dentro dela crio outros objetos do mesmo tipo do criado acima
end;

finally
FreeAndNil(objeto);
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
joemil
Moderador
Moderador


Registrado: Quinta-Feira, 25 de Março de 2004
Mensagens: 9100
Localização: Sinop-MT

MensagemEnviada: Ter Jul 08, 2008 4:47 pm    Assunto: Responder com Citação

q objetos vc esta criando?
_________________
<b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
DonOctavioDelFlores
Colaborador
Colaborador


Registrado: Quarta-Feira, 12 de Setembro de 2007
Mensagens: 2630
Localização: Pra lá de Bagda

MensagemEnviada: Ter Jul 08, 2008 5:06 pm    Assunto: Responder com Citação

usa stream e nao stringlist Very Happy
_________________
“The problem with the world is that everyone is a few drinks behind.” Humphrey Bogart
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
gilsonnrodrigues
Moderador
Moderador


Registrado: Quinta-Feira, 14 de Abril de 2005
Mensagens: 9009
Localização: Governador Valadares-MG

MensagemEnviada: Ter Jul 08, 2008 9:12 pm    Assunto: Responder com Citação

FreeMemory.

to brincando!!!

vc vai ter q explicar melhor!!!

tem mts vezes q o problema é tão complicado q não tem cmo liberar as memórias alocadas, e aí só colocando + memória no PC.

agora se vai poder ou não? só vendo como ta seu código.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Wolver
Membro Junior
Membro Junior


Registrado: Quinta-Feira, 9 de Fevereiro de 2006
Mensagens: 343

MensagemEnviada: Qua Jul 09, 2008 10:14 am    Assunto: Responder com Citação

joemil escreveu:
q objetos vc esta criando?


joemil, gilsonnrodrigues, DonOctavioDelFlores

Fiz assim:
Exemplo

TBColaborador = Class
private
novo : boolean;
empresa : string;
codigo : string;
nome : string;
status : string;
protected
public
contructor create;
destructor destroy;
procedure gravar;
procedure excluir;
procedure carregadadoscolaborador;

published
property NOVO : Boolean read FNOVO;
property EMPRESA : String read FEMPRESA;
property CODIGO : String read FCODIGO;
property NOME : String read FNOME write FNOME;
property STATUS : String read FSTATUS write FSTATUS;



Basicamente o meu projeto todo é feito assim (tem mais coisa ocultas que não convém mostrar)

mas o caso é que a quando vou fazer a importação eu crio o objeto e logo depois de feita a gravação utilizo o FreeAndNil()

assim:

try
objeto.create;
while nof eof do begin
rotina de importacao;///dentro dela crio outros objetos do mesmo tipo do criado acima
end;

finally
FreeAndNil(objeto);
end;

eis a pergunta: em termos de performance é melhor eu criar esse objeto na hora que crio o meu form (form da importação) e libero ele na formonclose?Ou durante o while ?(citado acima).
Só sei que estou com problema sério.... Very Happy ...a rotina em si funciona, só que estou achando que não é apropriada para ser utilizada dessa maneira, se alguém puder me ajudar agradeço.Obrigado!

espero que tenham entendido...até mais!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
BugsBunny
Mestre
Mestre


Registrado: Quarta-Feira, 19 de Novembro de 2003
Mensagens: 890

MensagemEnviada: Qua Jul 09, 2008 10:26 am    Assunto: Responder com Citação

Olá velinho,

Deixa ver se eu entendi... Vc está criando essa classe de colaboradores para cada colaborador que vc ler? É isso?

Realmente, se for isso tem algumas coisas faltando, vc criou uma serie de classes e simplesmente não tem como encontrar um colaborador especifico sem "percorrer" todas as classes. E porque não está gravando numa tabela ...

Como é esse arquivo texto? Porque uma forma mais tradicional de importação não funciona?

Bugs Very Happy
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Wolver
Membro Junior
Membro Junior


Registrado: Quinta-Feira, 9 de Fevereiro de 2006
Mensagens: 343

MensagemEnviada: Qua Jul 09, 2008 10:56 am    Assunto: Responder com Citação

BugsBunny escreveu:
Olá velinho,

Deixa ver se eu entendi... Vc está criando essa classe de colaboradores para cada colaborador que vc ler? É isso?

Realmente, se for isso tem algumas coisas faltando, vc criou uma serie de classes e simplesmente não tem como encontrar um colaborador especifico sem "percorrer" todas as classes. E porque não está gravando numa tabela ...

Como é esse arquivo texto? Porque uma forma mais tradicional de importação não funciona?

Bugs Very Happy



BugsBunny escreveu:
Olá velinho,
Deixa ver se eu entendi... Vc está criando essa classe de colaboradores para cada colaborador que vc ler? É isso?


eu crio a classe colaborador...(tenho uma Unit onde declarei todas a classes que utilizo no meu projeto),...crio a o objeto de acordo com a necessidade de ser utilizado...até porque se eu for ficar criando uma classe para cada colaborador (não tem lógica) ;

BugsBunny escreveu:

Realmente, se for isso tem algumas coisas faltando, vc criou uma serie de classes e simplesmente não tem como encontrar um colaborador especifico sem "percorrer" todas as classes. E porque não está gravando numa tabela ...


...não é isso não...localizo o colaborador através de uma procedure não mencionada.

Da forma tradicional até daria para fazer, mas se eu fizer outra rotina terei duas rotinas fazendo a mesma coisa.

É uma importação de relógio de ponto onde tenho somente a matricula e a data e a hora da batida ...aí tenho que localizar o horário que está cadastrado para o colaborador e ver se a batida se encaixa (em qual deles...cada colaborador por ter inúmeros horários cadastrados - diferentes entre si - não é tão simples)
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB