error 5302: Exaustão de memória

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

icarocrow
Usuário Nível 1
Usuário Nível 1
Mensagens: 4
Registrado em: 13 Out 2009 23:06
Localização: Matrix

error 5302: Exaustão de memória

Mensagem por icarocrow »

É isso pessoal,

Peguei um sistema, não tenho experiência na linguagem, e já consegui entender como funciona todo processo de compilação e linkedição, então consegui gerar o executável a algumas horas atrás, com a ajuda do AlxSts aqui no forum.

Agora, logo após logar no sistema, ele roda uma rotina de "Reorganização de Arquivos" e pede para aguardar. Após algum tempo o sistema trava e exibe a seguinte mensagem: "Unrecoverable error 5302: Conventional memory exhausted"

Eis abaixo, o trecho do código no .PRG:
@ 08, 14, 14, 66 BOX B_SINGLE + " "
@ 10, 25 SAY "Reorganizando Arquivos. Aguarde..."
sha_shadow(08, 14, 14, 66)

@ 12, 35 SAY " DETNF "
USE DET_NF NEW
INDEX ON det_nf->num_nf TO det_nf

@ 12, 35 SAY " CADEXP "
USE CAD_EXP NEW
INDEX ON CAD_EXP->NUMERO TO NUM_EXP

@ 12, 35 SAY " CHEQUES "
USE CHEQUES NEW...
Espero que possam me ajudar mais uma vez! Obrigado!
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: error 5302: Exaustão de memória

Mensagem por alxsts »

Olá!

A tua aplicação não está cabendo nos 640 Kb de memósia base. Provavelmente está sendo gerada em modo real e não em modo protegido. Como você mencionou estar utilizando o Blinker, certamente com alguns ajustes nos scripts de geração do executável, funcionará.

Um detalhe que observei, é que o programa vai abrindo cada arquivo e criando o(s) índice(s). Os arquivos, tanto de dados como de índice vão ficando abertos e, consequentemente, consumindo memória e recursos do SO. Experimente fechar após indexar. Talvez funcione...

Código: Selecionar todos

@ 08, 14, 14, 66 BOX B_SINGLE + " "
@ 10, 25 SAY "Reorganizando Arquivos. Aguarde..."
sha_shadow(08, 14, 14, 66)

@ 12, 35 SAY " DETNF "
USE DET_NF NEW
INDEX ON det_nf->num_nf TO det_nf

// Fechar arquivos
DbCloseArea()
//

@ 12, 35 SAY " CADEXP "
USE CAD_EXP NEW
INDEX ON CAD_EXP->NUMERO TO NUM_EXP

// Fechar arquivos
DbCloseArea()
//

@ 12, 35 SAY " CHEQUES "
USE CHEQUES NEW...

// Fechar arquivos
DbCloseArea()
//
Outra opção é Utilizar o recurso de busca do fórum. Existem tópicos que tratam do mesmo assunto. Um deles: https://pctoledo.org/forum/viewto ... ted#p51570

Se não conseguir, poste o teu arquivo .RMK e o .LNK para o pessoal analisar (use a função Code, ao invés de Quote, da barra localizada acima da caixa de edição de texto da mensagem. Desta forma, o código ficará numa área delimitada, própria para isto, como mostrado acima).
[]´s
Alexandre Santos (AlxSts)
icarocrow
Usuário Nível 1
Usuário Nível 1
Mensagens: 4
Registrado em: 13 Out 2009 23:06
Localização: Matrix

Re: error 5302: Exaustão de memória

Mensagem por icarocrow »

Obrigado mais uma vez pela ajuda,

Descobri que não estava com a versão full do blinker, e então instalei o 7.
Deu uns erros de "BLX286: 1313", mas foi só tirar de modo protegido e deu tudo certo.

Grato,
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: error 5302: Exaustão de memória

Mensagem por alxsts »

Olá!

Bom que você tenha resolvido o problema. Mas o ideal é gerar a aplicação no modo protegido. Desta forma, a memória extendida ficará disponível para ela. No modo real, apenas os 640 Kb poderão ser utilizados.
[]´s
Alexandre Santos (AlxSts)
Responder