Clipper On Line • Ver Tópico - Dúvida com a função Empty()

Dúvida com a função Empty()

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

Moderador: Moderadores

 

Dúvida com a função Empty()

Mensagempor Jairo Maia » 07 Jun 2018 11:33

Olá Pessoal,

Esse exemplo não deveria retornar .F.? Se está correto retornar .T., alguém poderia me explicar porque por favor?

PS: Por via de dúvidas atualizei o Harbour 3.2 com a última atualização:
Clear Screen
lExibePdf := .F.
@ 2,2 say Empty( lExibePdf )
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

Dúvida com a função Empty()

Mensagempor janio » 07 Jun 2018 12:00

Vc esta equivocado, Jairo!

Empty se refere a variavel tipo STRING, se esta vazia ou nao.

Para boolean, como vc fez, vc deve testar se a variavel eh FALSA ou VERDADEIRA

If lExibePdf
info("variavel VERDADEIRA")
Else
Info("variavel FALSA")
Endif
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1835
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 68 vezes

Dúvida com a função Empty()

Mensagempor Kapiaba » 07 Jun 2018 12:05

#include "FiveWin.ch"

STATIC lExibePdf := .F.

FUNCTION Main()

   IF EMPTY( lExibePdf )  // .OR. IF .NOT. lExibePdf

      ? lExibePdf

      lExibePdf := .T.

   ENDIF

RETURN NIL
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1765
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 310 vezes
Mens.Curtidas: 119 vezes

Dúvida com a função Empty()

Mensagempor Jairo Maia » 07 Jun 2018 12:15

Não Janio, não é isso. Mas descobri que se o conteúdo de uma variável lógica for Nil ou .F., retorna .T., acabei de ver no manual, não sabia.

Description:
The function tests if an expression yields an empty value. The status "Empty" exists for all data types, except Code block Object and Pointer. It is commonly used to test if a user has entered data into an input field.

Editado:
O mesmo exemplo, se colocar valor .T. retorna .F. para Empty():
Clear Screen
lExibePdf := .T.
@ 2,2 say Empty( lExibePdf )
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

Dúvida com a função Empty()

Mensagempor janio » 07 Jun 2018 12:37

Ah... que doidera kkkkk
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1835
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 68 vezes

Dúvida com a função Empty()

Mensagempor rubens » 07 Jun 2018 13:43

Estes dias tive mudar umas 3 rotinas por causa disso..Se tivesse lido o manual como o Jairo fez..
Daí tive que mudar para string onde eu comparava 'S' ou 'N'..
:%
"Eu e minha casa servimos ao Senhor e você ???"
Avatar de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1518
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 77 vezes
Mens.Curtidas: 104 vezes

Dúvida com a função Empty()

Mensagempor asimoes » 07 Jun 2018 14:11

Empty serve também para testar variável tipo date e array
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Dúvida com a função Empty()

Mensagempor JoséQuintas » 07 Jun 2018 15:37

E também numérico, seria empty pra zerado.
Já o array, é novidade.

Esquisito usar Empty() pra boolean, porque se é .T. ou .F., nunca poderia estar vazio, exceto 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

Dúvida com a função Empty()

Mensagempor asimoes » 07 Jun 2018 17:42

Quintas,

O nil pode acontecer em uma tabela, exemplo um campo tipo varchar2(1) onde recebe T ou F, mas pode ser null, já peguei essa situação em tabela access de terceiros.
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Dúvida com a função Empty()

Mensagempor Jairo Maia » 07 Jun 2018 20:31

Olá Pessoal,

Apenas para deixar registrado:

Empty segundo o manual retorna .T. nas seguintes situações para variáveis dos tipos:

A - Array: Array with zero elements
C - Character: Null string and White space characters (CR/LF, Space(), Tabs)
D - Date: Null date (CTOD(""))
H - Hash: Hash with zero elements
L - Logical: False (.F.). The Logical variable when "Nil" is same False.
M - Memo: Same as character
N - Numeric: The value zero


Não tem efeito (No empty value) para os tipos:

B - Code block
O - Object
P - Pointer


Uma variável lógica pode ter valor Nil ou lógico quando usado em parâmetros. Exemplo:
Function GeraDanfePDF( cFile, lExibePdf )
...
lExibePdf := If( lExibePdf = Nil, .T., lExibePdf )  // usei assim para funcionar
...
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




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 9 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