Página 1 de 1
Dúvida com a função Empty()
Enviado: 07 Jun 2018 11:33
por Jairo Maia
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:
Código: Selecionar todos
Clear Screen
lExibePdf := .F.
@ 2,2 say Empty( lExibePdf )
Dúvida com a função Empty()
Enviado: 07 Jun 2018 12:00
por janio
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
Dúvida com a função Empty()
Enviado: 07 Jun 2018 12:05
por Kapiaba
Código: Selecionar todos
#include "FiveWin.ch"
STATIC lExibePdf := .F.
FUNCTION Main()
IF EMPTY( lExibePdf ) // .OR. IF .NOT. lExibePdf
? lExibePdf
lExibePdf := .T.
ENDIF
RETURN NIL
Dúvida com a função Empty()
Enviado: 07 Jun 2018 12:15
por Jairo Maia
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():
Código: Selecionar todos
Clear Screen
lExibePdf := .T.
@ 2,2 say Empty( lExibePdf )
Dúvida com a função Empty()
Enviado: 07 Jun 2018 12:37
por janio
Ah... que doidera kkkkk
Dúvida com a função Empty()
Enviado: 07 Jun 2018 13:43
por rubens
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'..
:%
Dúvida com a função Empty()
Enviado: 07 Jun 2018 14:11
por asimoes
Empty serve também para testar variável tipo date e array
Dúvida com a função Empty()
Enviado: 07 Jun 2018 15:37
por JoséQuintas
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.
Dúvida com a função Empty()
Enviado: 07 Jun 2018 17:42
por asimoes
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.
Dúvida com a função Empty()
Enviado: 07 Jun 2018 20:31
por Jairo Maia
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:
Código: Selecionar todos
Function GeraDanfePDF( cFile, lExibePdf )
...
lExibePdf := If( lExibePdf = Nil, .T., lExibePdf ) // usei assim para funcionar
...