怎样判断一个对象未[定义或为空?

antony521 2013-09-01 06:20:42
两个菜单项一个复制记录一个粘贴记录
复制记录代码:
PUBLIC myobj
SCATTER NAME myobj
粘贴记录代码:
APPEND BLANK
GATHER NAME myobj
经常在未执行复制记录菜单的情况下误执行粘贴菜单选项出现myobj未定义的错误
现在想通过判断对象myobj未定义或为空来跳过粘贴记录的选项.
我用SKIP FOR (vartype(myobj) $ 'UX')没有任何作用.

Define POPUP EdtShort SHORTCUT RELATIVE FROM MROW(),MCOL()
Define Bar 1 Of EdtShort Prompt "复制记录" ;
MESSAGE "复制整行记录"
Define Bar 2 Of EdtShort Prompt "添加记录到表尾" ;
SKIP FOR (vartype(myobj) $ 'UX') ;
MESSAGE "添加并粘贴记录到表的末尾"

On Selection Bar 1 Of EdtShort Do CopyREC
On Selection Bar 2 Of EdtShort Do PasteREC
Activate POPUP EdtShort

PROC CopyRec
PUBLIC myobj
SCATTER NAME myobj
ENDPROC

PROC PasteRec
APPEND BLANK
GATHER NAME myobj
ENDPROC
...全文
106 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
antony521 2013-09-01
  • 打赏
  • 举报
回复
就这句SKIP FOR Vartype(myobj) != 'O' or Isnull(myobj)成了!多谢夜猫!
都市夜猫 2013-09-01
  • 打赏
  • 举报
回复
引用
是放在右键菜单中. 改成SKIP FOR Vartype(myobj) == 'U' .And. Isnull(myobj);仍然无效. 没辙了!
改也应该是这样 SKIP FOR Vartype(myobj) != 'O' or Isnull(myobj)
antony521 2013-09-01
  • 打赏
  • 举报
回复
是放在右键菜单中. 改成SKIP FOR Vartype(myobj) == 'U' .And. Isnull(myobj);仍然无效. 没辙了!
都市夜猫 2013-09-01
  • 打赏
  • 举报
回复
另外,你一楼那段从 Define popup ... 到 Activate popup 的代码在哪里,应该是在 RightClick 中吧,否则就不敢肯定 skip for 条件是否会在弹出的时候再次验证了
都市夜猫 2013-09-01
  • 打赏
  • 举报
回复
我用 xp 和 win7(32位旗舰版) 都试了一下,没发现问题,运行正常 一般我判断一个我需要的对象变量是否存在会这样写 vartype(myobj) == 'O' and !isnull(myobj)
antony521 2013-09-01
  • 打赏
  • 举报
回复
skip for (type('myobj') $ 'UX')也不行啊!没办法了吗? 是不是WIN7的原因.你哪里运行怎么样啊?
都市夜猫 2013-09-01
  • 打赏
  • 举报
回复
哦,不用再加空值判断,前面已有类型 X 判断
都市夜猫 2013-09-01
  • 打赏
  • 举报
回复
可以改用 type 试试 skip for (type('myobj') $ 'UX') 另外也可能变量存在,但值为 null,所以加上 and !isnull(myobj) 再试试
antony521 2013-09-01
  • 打赏
  • 举报
回复
最后不加 Release myobj是因为要多次复制同一记录. 问题关键是SKIP FOR (vartype(myobj) $ 'UX') 这一句无效. 是不该用在这里吗?vartype不能判断这种保存记录的对象? 有没有其它的办法? 我的系统WIN7,VFP9.0 SP2 2734
都市夜猫 2013-09-01
  • 打赏
  • 举报
回复
没看出问题所在 只提醒一点,粘贴代码最后应加上 Release myobj

2,727

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧