Página 1 de 1
Menssagem de Error no Clipper
Enviado: 30 Dez 2004 15:46
por marbio
Boa Tarde Colegas!!!
Estou com um problema no CLIPPER 5.3 usando o Exospace, esta dando a seguente mensagem :
(b)FieldWBLOC(0) Unrecoverable error 650: Processos Stack Foult
isso aconte com frequencia ex:
Usando um funcao para pesquisa de produtos a funcao e feita com o dbedit.
na hora que estou usando as teclas de funcao F2 etc.
Preciso urgente disso
t+
Marbio
Enviado: 30 Dez 2004 16:03
por Dudu_XBase
Já resolvi esse problema simplesmente linkando esse obj junto.
http://geocities.yahoo.com.br/dudu_xbase/__wait_b.zip
Por que acontece isso
Enviado: 31 Dez 2004 10:52
por marbio
Bom dia !!!
Tem como vc me explicar por que que acontece isso, em qualquer sistema
no MS-DOS, WIN98 etc...
fico muito agradecido
t+
Marbio
Enviado: 31 Dez 2004 11:53
por Dudu_XBase
Marbio comecei a ter esse problema qdo começaram a surgir processadores mais potentes, mas vi tb outros problemas relacionados a esse erro com forma de compilação e linkedição, já vi esse erro ser eliminado qdo linkado com o blinker versão 7.0, e tb qdo migrado de versão de clipper 5.01 para 5.2 ou 5.3 esse erro sumir.
Já vi programadores dizerem q eh por causa de funções sem finalização vc montar uma função ou procedure e não colocar o return no final.
Enviado: 31 Dez 2004 23:48
por evolver
Processor Stack Fault - Geralmente isso ocorre por estouro de pilha. Normalmente a pessoa está usando uma função recursiva. Ou seja ela fica chamando a si mesma ou duas funções que uma chama a outra continuamente.
Explico: (explicação pra novatos, não critiquem)
A pilha é um método pelo qual um programa guarda aonde está a função anterior de modo que o return pode retornar ao ponto onde o programa estava quando uma função é chamada. Quando uma função fica chamando a outra ou uma função fica se chamando continuamente ocorre que essa pilha se enche e ocorre um estouro de pilha.
Os casos de função que ficam se chamando são similares a esses
- Funções se chamando recursivamente
func funcao1()
v_variavel=funcao2()
return v_variavel
func funcao2()
v_variavel2=funcao1()
return v_variavel2
- Função recursiva
func funcao1()
v_variavel=funcao1()
A melhor forma de descobrir onde está dando a recursividade é usando o CLD pra depurar o programa e o porque isso ocorre.