Clipper On Line • Ver Tópico - REPLACE X WITH Y - ANORMALIDADE?

REPLACE X WITH Y - ANORMALIDADE?

Discussão sobre a linguagem CA-Clipper.

Moderador: Moderadores

 

REPLACE X WITH Y - ANORMALIDADE?

Mensagempor tchadrack » 02 Nov 2016 11:10

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)
tchadrack
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 27
Data de registro: 15 Mar 2016 15:42
Cidade/Estado: São Paulo
Curtiu: 1 vez
Mens.Curtidas: 2 vezes

REPLACE X WITH Y - ANORMALIDADE?

Mensagempor Jairo Maia » 02 Nov 2016 12:34

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.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

REPLACE X WITH Y - ANORMALIDADE?

Mensagempor JoséQuintas » 02 Nov 2016 16:46

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?

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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

REPLACE X WITH Y - ANORMALIDADE?

Mensagempor tchadrack » 02 Nov 2016 19:26

O banco (f1) tem a coluna periodo mas não periodox

   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
tchadrack
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 27
Data de registro: 15 Mar 2016 15:42
Cidade/Estado: São Paulo
Curtiu: 1 vez
Mens.Curtidas: 2 vezes

REPLACE X WITH Y - ANORMALIDADE?

Mensagempor tchadrack » 02 Nov 2016 22:31

Pelo que entendi então isso não é normal, vocês tem alguma idéia do que poderia estar acontecendo?
tchadrack
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 27
Data de registro: 15 Mar 2016 15:42
Cidade/Estado: São Paulo
Curtiu: 1 vez
Mens.Curtidas: 2 vezes

REPLACE X WITH Y - ANORMALIDADE?

Mensagempor tchadrack » 02 Nov 2016 23:12

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
tchadrack
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 27
Data de registro: 15 Mar 2016 15:42
Cidade/Estado: São Paulo
Curtiu: 1 vez
Mens.Curtidas: 2 vezes




Retornar para CA-Clipper

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 7 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro