Página 1 de 1

REPLACE X WITH Y - ANORMALIDADE?

Enviado: 02 Nov 2016 12:10
por tchadrack
ao fazer o debug em meu sistema, notei que a linha

REPLACE periodo WITH periodox (a variável periodox contém 1 único caractere e é inserida no banco através deste comando)


ESTÁ ACONTECENDO que logo após passar por este comando REPLACE, o conteúdo da variável periodox fica vazio, ou seja "" seu conteúdo desaparece.


ISSO É NORMAL NO CLIPPER? (Não tenho costume de programar no clipper mas preciso fazer a manutençao do sistema)

REPLACE X WITH Y - ANORMALIDADE?

Enviado: 02 Nov 2016 13:34
por Jairo Maia
Olá tchadrack,
tchadrack escreveu:ISSO É NORMAL NO CLIPPER?
Não! Em hipótese nenhuma.

Se não existe no banco de dados uma variável chamada periodox, seu conteúdo é mantido após o Replace. Porém, se existe a variável com mesmo nome no banco de dados isso acontece porque ela assume o conteúdo do campo.

Poste um exemplo de como você está fazendo para que possamos opinar.

REPLACE X WITH Y - ANORMALIDADE?

Enviado: 02 Nov 2016 17:46
por JoséQuintas
Deixa eu ver se entendi: o replace está certo, e o conteúdo da variável estava certo.
Depois fica errado.

Por acaso não existe essa variável fora do módulo?

Código: Selecionar todos

PRIVATE periodox := " "
   ? periodox // aqui retorna branco
   Subrotina1()
   SubRotina2( periodox )
   ? periodox // aqui retorna branco
   RETURN

FUNCTION SubRotina1()

   PRIVATE periodox := "A"

   ? periodox // aqui retorna "A"

   RETURN NIL

FUNCTION SubRotina2( Periodox )

   periodox := "X"
   ? periodox // aqui retorna "X"
   RETURN NIL

REPLACE X WITH Y - ANORMALIDADE?

Enviado: 02 Nov 2016 20:26
por tchadrack
O banco (f1) tem a coluna periodo mas não periodox

Código: Selecionar todos

   Select f1
                     aa:= f1->descr
                     aai:= aa + "0"
					 
					 
                     If (reglock(0))
					
						**** aqui, periodox é igual a "M"
			Replace periodo With periodox 
                                                **** aqui, periodox é igual a "", mas deveria ser "M", senão dá problema um pouco mais a frente no código..
                       
                        Replace arquivo With aa
                        Replace arqind With aai
														
                        Unlock
                     Else
                        mensagem(1)
                        Exit
                     EndIf

REPLACE X WITH Y - ANORMALIDADE?

Enviado: 02 Nov 2016 23:31
por tchadrack
Pelo que entendi então isso não é normal, vocês tem alguma idéia do que poderia estar acontecendo?

REPLACE X WITH Y - ANORMALIDADE?

Enviado: 03 Nov 2016 00:12
por tchadrack
Eu estava aqui fuçando no sistema, e compilei com o hbmk2. Ao fazer o debug nesse trecho do programa a variável não é mais alterada, e o bug desapareceu.

A instrução replace x with y não altera mais a variável.

Ou seja, acho que o problema era do compilador que eu estava utilizando, vou fazer um checkup na minha instalação do Harbour.

Agradeço a ajuda, :xau