A reclamação do cliente não incluia mensagem alguma. O usuário explicou que de uma hora para outra "o computador voltava para a tela inicial". Eu imaginei que ele quisesse dizer que o PC estava resetando, mas quando pedi uma demonstração foi que entendi o que ele quis dizer: o programa fechava abruptamente e o desktop (a "tela inicial") voltava a ficar visível.
Nenhuma mensagem de erro era exibida, mas como era um programa DOS isso não queria dizer que não houvesse uma.
Nas propriedades do atalho para o programa, eu desmarquei "fechar ao sair" e pedi que o usuário repetisse o teste. Não demorou para o programa encerrar, mas como "fechar ao sair" estava desmarcado eu pude ver a mensagem de erro bem no meio da tela do programa:
GET (0) Unrecoverable error 5302: Conventional memory exhausted
Eu encontrei várias páginas com muito blá-blá-blá (e algumas repletas de besteiras) sobre o problema, mas apenas uma realmente esclarecedora.
Então eu me certifiquei de que o arquivo autoexec.nt (o programa rodava sob Windows XP) contivesse a seguinte linha:
set CLIPPER=F200;E0
Se me recordo bem, a linha "set CLIPPER=F200" existia. Faltava apenas o ";E0"
E o problema se foi. Já passou-se um mês sem ocorrência. E acontecia todos os dias.
Bons tempos do Clipper! :)
ResponderExcluirO F200 é para dizer que o programa vai poder lidar com até 200 arquivos (DBF) abertos ao mesmo tempo (o F é de files), mas o E0 eu não conhecia. Pelo que entendi no forum da CA, isso desliga o uso da expanded memory, só não entendí como isso resolve o problema com o estouro da memória convencional.
Roberto,
ResponderExcluirEu também não entendi a relação, mas certamente resolveu o problema. Aparentemente o clipper faz uso mais racional da memória convencional quando não pode usar memória expandida.
Não faço ideia pra que serve esses códigos, mas a verdade é que fez um programa de automação comercial que uso baseado em DOS funcionar! kkkkkk Obrigado
ResponderExcluir