0

你好,

我们正在 pb 12.6 Build 4035 - Classic 上开发我们的产品。现在我们有以下问题:

我们有一个复杂的窗口层次结构,每个层次都有一种特殊的功能并且变得越来越复杂。最高层是一个可视化的用户对象。这将实例变量带到了窗口。如果用户在用户对象中执行任何任务,我们将通过实例 var 将操作发送到窗口。开发->保存->运行一切正常。但是在将函数部署到窗口后,运行时引用会出错。此错误发生在 powerbuilder 用完(仅在部署后)和运行 exe(独立)时。在重新保存我们的用户对象后,它又可以工作了。

我们的窗口层次结构:

从最低到最高

- wo_window(简单窗口,基本功能,如 msgbox)

- wo_uni(窗口有正确的系统和更多的功能)

- wo_sheet(窗口可以与数据库通信)

- wo_tab(窗口有一个标签页)

- wo_tab_obj(对象窗口,特殊功能,对象是项目或地址,层次结构的最高级别)

- w_adr(地址的对象窗口)



wo_tab_obj 上是我们的用户对象。=> wo_tab_obj::open{ uo_blaettern_obj.event ue_set_ref( /*wo_tab_obj awo_tab_obj */ this ) }

-> 在用户对象中,引用存储在 iwo_tab_obj 中

用户开始对用户对象执行操作,代码调用:iwo_tab_obj.get_obj().get_parameterart()

函数调用 get_obj() 抛出异常错误的运行时引用。get_obj() 在 wo_tab_obj 中声明。所以现在我们尝试了一些东西并调用了较低层次级别的函数。这是有效的(也在编译和运行exe之后)。

异常也出现在事件中,调用在 wo_uni 中声明的事件有效。

所以我们认为编译过程中存在错误,或者我们做错了什么?

我们不会重新创建窗口层次结构,因为它非常适合我们的任务,我们需要所有这些级别。

4

1 回答 1

0

我怀疑这是编译过程中的错误。更可能的情况是编译的 P 代码中的指针问题......你有没有机会在层次结构的某个地方有一个循环对象引用?

例如,在 wo_tab_obj 的某处,您可能引用了某个 userobject 或 NVO 类,它本身有一个声明,该声明引用回 wo_tab_obj。

于 2015-04-30T16:24:28.323 回答