PowerBuilder中的命名冲突问题

        最近在编译公司的系统程序时出现问题,提示某窗口上用户对象的属性非法。(类似于Incompatible property rb_year for type uo_query……这样的编译错误)。经过检查,发现该用户对象并没有错误,其中也包括rb_year这个控件,为什么编译不通过呢?为了排除是控件的问题,又向窗口上增加了一个用户对象,该用户对象的属性存取语句就可以正常保存!那么为什么这个用户对象不能访问属性?排除了用户对象本身的原因,尝试将该用户对象重命名,并修改代码中的名称,就可以保存。难道是uo_query这个名字不行?经过浏览发现在其它PBL中有一个命名为uo_query的对象,怀疑是这种影响。将这个命名为uo_query的用户对象另存为其它名称,就不再影响其它窗口中名为uo_query的其它用户对象了。那么为什么原来可以保存成功现在编译不通过?最后知道是有一位同事在PBL列表中新增了PBL,就包括这个UO_QUERY用户对象,造成原来的代码无法编译。

        可见PowerBuilder9.0的编译器中对这种情况的处理是有问题的!窗口上用户对象的名称不能命名为某一用户对象类的名称!按说类的属性没有实例化并不能存取,再说放在窗口上的用户对象肯定具有访问的优先权,PB如此处理,实在令人想不通。不知道以后的版本是否修正。(我是5507版本)

        知道了这个问题的原因,处理办法有两个,一个是将名为uo_query的用户对象另存,不过这样可能影响比较大,还有一种是采用隔离的办法。即在窗口中使用本窗口上名为uo_query的用户对象时,使用this.uo_query.XXX这种语法形式,限定作用域,就可以保存成功。

        希望这点体会对有相同经历的朋友们有所启发。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值