Fórum Erro - Out of Memory #156848

30/04/2003

0

Olá.
Estou fazendo uma aplicação em Delphi 4, que está acessando base de dados em MySQL.
É um processamento de espelho de ponto, que vai inserindo as batidas dos funcionários e fazendo os respectivos cálculos.
Mas chega num ponto que a Aplicação dá uma Mensagem ´Out of Memory´
e não dá mais para mexer em nenhuma informação da base.

Alguém já pegou esse erro? Sabe por onde posso começar?

PS.: Faço o processamento de cada funcionário por vez, para não ter muitas informações na memória naquele momento. Mas abre e fecho as tabelas para cada funcionário. :(

Obrigada, pela atenção!!


Eneblis

Eneblis

Responder

Posts

30/04/2003

Henry Lima

Vc esta usando query ou table?


Responder

Gostei + 0

30/04/2003

Aroldo Zanela

Coloca o fragmento de código onde ocorre o problema para verificarmos melhor. Pode estar relacionado a muitos fatores, mas normalmente é na criação e liberação de objetos em run-time.


Responder

Gostei + 0

30/04/2003

Eneblis

[quote:e27e21a710=´Henry Lima´]Vc esta usando query ou table?[/quote:e27e21a710]

Somente querys!


Responder

Gostei + 0

30/04/2003

Henry Lima

Você esta liberando os forms da memória? Como você esta fazendo para chamar os formulários? Se os formulário não estão sendo criados na hora que são chamados e liberados da memória quando são fechados, pode ser isso, como vc esta fazendo com os formulários?

Coloque um pedaço do código que vc esta usando para que nós possamos dar uma análisada mais afundo. Também uso MySql e nunca aconteceu comigo, e olha que uso tabelas enormes em rede ainda e nunca deu isso.


Responder

Gostei + 0

30/04/2003

Eneblis

[quote:817c1d46d7=´Aroldo Zanela´]Coloca o fragmento de código onde ocorre o problema para verificarmos melhor. Pode estar relacionado a muitos fatores, mas normalmente é na criação e liberação de objetos em run-time.[/quote:817c1d46d7]

Oi Aroldo, o código-fonte é um pouco extenso, ele faz várias chamadas, mas é +/- assim:

[size=9:817c1d46d7][size=7][color=darkred:817c1d46d7]
while not dm.Empresa.Eof do
begin
dm.Carrega_Funcionario(dm.EmpresaCODIGO.Value);
Label6.Caption := dm.EmpresaFantasia.AsString;
Progresso.MinValue := 0;
Progresso.MaxValue := dm.Funcionario.RecordCount;
Progresso.Progress := 0;
Application.ProcessMessages;
while not (dm.Funcionario.Eof) do
begin
Application.ProcessMessages;
Carrega_Espelho(dm.FuncionarioEMPRESA.Value, dm.FuncionarioMATRICULA.Value, di, df);
Escreve_Mensagem(´Processando Espelho de...: ´+dm.FuncionarioNOME.AsString);
Inseri_Dias;
Totaliza_Calculo;
Label11.Caption := ´Atualiza BH´;
Atualiza_BH;
MaskEdit1.Enabled := False;
ComboBox1.Enabled := False;
Progresso.Progress := Progresso.Progress+1;
Application.ProcessMessages;
dm.Funcionario.Next;
end;
Label11.Caption := ´Próxima Empresa´;
dm.Empresa.Next;
end;{fim while}[/color:817c1d46d7][/size:817c1d46d7][/size]

PS.: Dentro do procedimento ´Inseri_Dias´ tem mais quatro procedures que são chamadas.


Responder

Gostei + 0

30/04/2003

Eneblis

[quote:da7f86ebaf=´Henry Lima´]Coloque um pedaço do código que vc esta usando para que nós possamos dar uma análisada mais afundo. Também uso MySql e nunca aconteceu comigo, e olha que uso tabelas enormes em rede ainda e nunca deu isso.[/quote:da7f86ebaf]

Que bom que você trabalha com MySQL.
Eu uso um formulário e através de um botão, mando gerar o espelho, usando várias chamadas de 6 procedures.

O código está +/- assim:
[color=red:da7f86ebaf][size=7:da7f86ebaf] while not dm.Empresa.Eof do
begin
Label11.Caption := ´Carregando Funcionários´;
dm.Carrega_Funcionario(dm.EmpresaCODIGO.Value);
Label6.Caption := dm.EmpresaFantasia.AsString;
Progresso.MinValue := 0;
Progresso.MaxValue := dm.Funcionario.RecordCount;
Progresso.Progress := 0;
Application.ProcessMessages;
while not (dm.Funcionario.Eof) do
begin
Application.ProcessMessages;
Carrega_Espelho(dm.FuncionarioEMPRESA.Value, dm.FuncionarioMATRICULA.Value, di, df);
Escreve_Mensagem(´Processando Espelho de...: ´+dm.FuncionarioNOME.AsString);
Inseri_Dias;
Totaliza_Calculo;
Atualiza_BH;
MaskEdit1.Enabled := False;
ComboBox1.Enabled := False;
Progresso.Progress := Progresso.Progress+1;
Application.ProcessMessages;
dm.Funcionario.Next;
end;
dm.Empresa.Next;
end;{fim while}[/size:da7f86ebaf][/color:da7f86ebaf]


Responder

Gostei + 0

30/04/2003

Aroldo Zanela

Colega,

Eu realmente não consegui perceber algum motivo para o seu problema. Estou postanto apenas para subir o tópico novamente e ver se algum colega tem alguma idéia.
Se você puder adicionar mais detalhes, talvez possamos avançar na solução.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar