Fórum Erro - Out of Memory #156848
30/04/2003
0
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
Curtir tópico
+ 0Posts
30/04/2003
Henry Lima
Gostei + 0
30/04/2003
Aroldo Zanela
Gostei + 0
30/04/2003
Eneblis
Somente querys!
Gostei + 0
30/04/2003
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.
Gostei + 0
30/04/2003
Eneblis
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.
Gostei + 0
30/04/2003
Eneblis
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]
Gostei + 0
30/04/2003
Aroldo Zanela
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.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)