if statement não funciona direito

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

tchadrack
Usuário Nível 1
Usuário Nível 1
Mensagens: 27
Registrado em: 15 Mar 2016 15:42
Localização: São Paulo

if statement não funciona direito

Mensagem por tchadrack »

Estou tendo problema no seguinte código:

Código: Selecionar todos

DO WHILE (!Eof())
       TTT := TRIM(F2->MENUPRI)  //criei esta variável para facilitar checar o conteúdo dela durante o debug
        IF (TTT!="")  //mesmo quando o conteúdo de TTT é diferente de "" o código abaixo não é executado
          alert("executado")
        ENDIF
       SKIP
ENDDO
o código dentro da cláusula IF acima não é executado, mesmo que eu inverta o sinal de "diferente !=" para "igual ==)
não é executado quando TTT != "", já alterei até o nome da variável, só é executado se eu colocar um conteúdo dentro de "", por exemplo TTT !- "c"
já tentei usar <> como sinal para diferente. já tentei usar o hb34 ou a versão 3.2.

a versão do compilador mingw:
gcc (Rev2, Built by MSYS2 project) 7.3.0

tentei compilar usando
Harbour 3.2.0dev (r2011030937) e o
Harbour 3.4.0dev () (2020-11-14 01:40)

mas os dois apresentaram o mesmo problema

PATH=c:\hb34\bin;c:\mingw\bin;c:\bcc\bin;c:\hb34\;c:\hb34\bin\win\mingw ao compilar usando a versão 3.4
PATH=c:\hb32\bin;c:\mingw\bin;c:\bcc\bin;c:\hb32\;c:\hb32\bin\win\mingw ao compilar usando a versão 3.2

algum dos colegas saberia me dizer porque isto está acontecendo?
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

if statement não funciona direito

Mensagem por microvolution »

tchadrack escreveu:IF (TTT!="")
experimente assim:

Código: Selecionar todos

IF TTT<>""
ou

Código: Selecionar todos

IF TTT<>NIL
manda ver e posta os resultados, pra nós por favor!
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
LDOSISTEMAS
Usuário Nível 1
Usuário Nível 1
Mensagens: 48
Registrado em: 01 Set 2014 17:04
Localização: CLAUDIO/MG
Contato:

if statement não funciona direito

Mensagem por LDOSISTEMAS »

Boa tarde
IF (TTT!="") //nesse ponto em vez de (TTT!="") não poderia ser !(TTT="")
LAURO DE OLIVEIRA
Analista/Diretor
(37) 3381 32 11
www.ldosistemas.com.br
Imagem
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

if statement não funciona direito

Mensagem por alxsts »

Olá!

Situação estranha esta... mas certamente não é problema no Harbour...

Código: Selecionar todos

// A variável TTT foi declarada como LOCAL?
// Será que existe alguma PRIVATE ou PUBLIC com nome de TTT?
// Trim() remove apenas espaços à direita. Pode ter sobrado alguma coisa...
// Use Alltrim( que remove espaços à esquerda e à direita...)

DO WHILE (!Eof())  // em que área é feito este loop? F2 ?
   TTT := ALLTRIM( F2->MENUPRI )
   IF ! Empty( TTT )
      Alert("executado")
   ENDIF
   SKIP  // em que área é feito este skip? F2 ?
ENDDO

// ou

DO WHILE F2->( !Eof() )
   IF ! Empty( ALLTRIM( F2->MENUPRI )
      alert("executado")
   ENDIF
   F2->( DBSKIP() )
ENDDO
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

if statement não funciona direito

Mensagem por JoséQuintas »

Problema tradicional.

Ao invés de

IF (TTT!="")

utilize

IF ! TTT == "" ou IF ! Empty( TTT )

Explicação: ao comparar string, é usado o tamanho da menor e os outros caracteres são desprezados.

= compara pelo menor tamanho
!= compara pelo menor tamanho, é o contrário de =
== compara exatamente igual
! x == y compara não exatamente igual, é o contrário de ==

Código: Selecionar todos

PROCEDURE Main

   ? "ABA" = ""       // .T. considera igual
   ? "ABA" != ""      // .F. considera igual
   ? "ABA" == ""      // .F. considera diferente
   ? ! "ABA" == ""    // .T. considera diferente
   Inkey(0)

   RETURN
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder