Página 1 de 1

Ajuda: possivel BUG

Enviado: 11 Jul 2007 23:38
por diego1504
Estou tendo um problema muito estranho com meu código. Gostaria de saber se já ocorreu com algum de vocês.

existe estre trecho do codigo:

if !COMISREC(M->NU_FIANCA)
do BAIXA_COMIS
endif
do BAIXA_FIANCA
do MONTA_ARQ_CONF
endif

COMISREC da diferente, logo ele entra na parte que tá do BAIXA_COMIS...Ai que o bicho pega ao inves de ele ir para esta parte PROCEDURE BAIXA_COMIS, ou seja cabeçalho da procedure e mandar bala. O codigo milagrosamente pula para a uma linha nada a ver logo acima da procedure BAIXA_FIANCA e começa a executar a procedure BAIXA_FIANCA

Bom eu tentei asteriscar o do BAIXA_FIANCA, mas mesmo assim o codigo vai parar lá.

Eu estou batante preocupado com isso? alguem pode me ajudar

desde de já agradeço

Enviado: 11 Jul 2007 23:57
por sygecom
Bem Vindo ao Forum !!!
if !COMISREC(M->NU_FIANCA)
do BAIXA_COMIS
endif
do BAIXA_FIANCA
do MONTA_ARQ_CONF
endif
Tche, não entendi bem o que vc quiz mostrar ai nesse seu exemplo.....mas tudo bem..veja que vc diz que mesmo colocando asterisco ele executa a função.....deve ter algo errado por ai, o seu sistema não deve esta compilando.

Qual versão do Clipper vc esta usando ?

Nos de mais detalhe e post sua função completa para analisar melhor...

Abraços
Leonardo Machado

Enviado: 12 Jul 2007 00:10
por diego1504
Eu estou usando o Clipper 5.3
compilador Blinker 1.00

Vou tentar explicar melhor.

if !COMISREC(M->NU_FIANCA)
do BAIXA_COMIS
endif
do BAIXA_FIANCA
do MONTA_ARQ_CONF
endif

Me baseando no debug do clipper o programa esta executando da seguinte maneira.

A linha de execução do debug fica em cima do do BAIXA_COMIS. Ao inves de ele executar a PROCEDURE BAIXA_COMIS, o programa salta para a linha logo acima ao PROCEDURE BAIXA_FIANCA.

Uma tentativa minha de isolar o erro eu asterisquei a linha do BAIXA_FIANCA. Porém mesmo assim ele continua indo para o mesmo lugar.

O mais estranho é que estando ou não estando asteriscado a "linha da execução do debug" não fica em cima da chamado da procedure do BAIXA_FIANCA..Logo eu não entendo como o programa executa a PROCEDURE BAIXA_FIANCA sendo que eu não chamei ela.

Ou seja:

Ao inves do programa executar esta procedure:

* --------------------
PROCEDURE BAIXA_COMIS
* --------------------

sele CADCOM
CADCOM->(Dbseek(M->NU_FIANCA))
M->FIANCA_COM := CADCOM->NU_FIANCA
.
.
.

ele vem e executa este pedaço

*------------------
PROCEDURE BAIXA_FIANCA

M->DT_CONTAB = DATAW
M->DATANT = CTOD(' / / ')
M->COD_EVENTO = val(space(02))
M->CD_FILIAL = val(space(7))
M->VL_CONTAB = val(space(14) + '.' + space(2))
.
.
.




O codigo esta muito grande..se eu postar acho que vai dar umas 4 paginas sem brincadeira
:'(


Muito Obrigado pela ajuda :))

Enviado: 12 Jul 2007 00:45
por sygecom
Daniel, não sei qual seu grau de experiencia com o clipper, mas não me leve a mal pelas dicas....tente excluir todos os seus OBJ e recompilar o seu sistema....se vc colocar o asterisco em BAIXA_FIANCA ...ele deve ignorar o mesmo. Se ainda assim compilar sem dar erro algum e apresentar o mesmo problema acredito que seja algum problema de logica...

Veja Tb. que vc esta usando assim:

Código: Selecionar todos

if !COMISREC(M->NU_FIANCA )
   do BAIXA_COMIS
endif
do BAIXA_FIANCA
do MONTA_ARQ_CONF
endif 
Como não sei sua Logica e nem vi seu codigo imagino que deveria ser algo mais ou menos assim:

Código: Selecionar todos

if !COMISREC(M->NU_FIANCA)
   do BAIXA_COMIS
else
   do BAIXA_FIANCA
   do MONTA_ARQ_CONF
endif 
Um Conselho que não vai resolver seu problema mas vc vai ter outros ganhos.....uso o Blinker 7.0 , nele vc tem varias opções a mais que não tem no 1.00. ex: compressão do EXE...diminui drasticamente o tamanho do seu EXE.

Abraços
Leonardo Machado

Enviado: 12 Jul 2007 00:55
por diego1504
Ok...vou deletar os OBJ e instalar o blinker 7.0 para ver no que da.

Obrigado Leonardo

Enviado: 12 Jul 2007 01:16
por sygecom
Tche, sendo bem sincero...seu problema ainda não vai se resolver apenas deletando seus .OBJ. Mas qualquer posta ai que resolvemos..

Abraços
Leonardo Machado

Enviado: 12 Jul 2007 01:45
por diego1504
Cara resolveu!!!!! Acredite!!!

Um ato simples deste acabou com o bug.

Acabei de indetificar o erro na lógica que estava perseguindo. Mas tudo graças a sua ajuda.

Acredito que o Obj anterior estava corrompido sei la...quando compilei o novo imediatemente o debug passou a agir certo.




:)) Valeu Leonardo Problema Resolvido

Enviado: 12 Jul 2007 03:41
por Maligno
Que bom que resolveu. Mas quando coisas estranhas assim acontecem, me pergunto se não haveria algum problema com o HD. Será?