Well, then it is a documented one. It surprised me at first, but then, it's not that surprising at all.
Char fields are right padded with blanks. So empty() does not know whether you inserted space(0) or space(4) for char fields. But for memo fields it does.
It's all described in the help.
Still, it's tricky
create cursor ppp(ppp M)
insert into ppp (ppp) values (space(4))
?empty(ppp) && FALSE
qqq=ppp
?empty(qqq) && TRUE !!
Well, then it is a design bug documented one!
With this, ISBLANK() and EMPTY() are equal for a memo;
then , if ISBLANK() can do this, why make confusion in the EMPTY() ?
None sense, a design bug.
Correct implementation is :
clear
create cursor ppp(ppp M)
APPEND BLANK
? isblank(ppp),empty(ppp)
insert into ppp (ppp) values ('')
? isblank(ppp),empty(ppp)
insert into ppp (ppp) values (' ')
? isblank(ppp),empty(ppp)
SCATTER MEMO MEMVAR
? isblank(m.ppp),empty(m.ppp)
Fabio