当分配的数据对象丢失(在构建或开发中)时,是否有人使用 PowerBuilder 基础类 (PFC) 经历过应用程序崩溃?
我们都经历过动态分配数据对象并且您在其中获得预期数据的空白数据窗口。这种情况有所不同,在开发和编译情况下,PFC 代码都会因空对象引用而崩溃。
当一个全新的数据对象添加到窗口但由于某种原因 TFS 无法将新对象下拉到构建机器时,就会出现这种情况。我不知道是我们的构建人员不知道他们在做什么,还是 TFS 失败——倾向于后者。这是另一个问题——如果有人知道解决方案,我们将不胜感激。
由于当分配给数据窗口控件的数据对象丢失时,PFC 在许多地方崩溃——我倾向于认为有人通过修复 PFC 解决了这个问题。
测试用例:
Datawindow control dw_1 Dataobject dw_new_dataobject 这是全新的,我们的构建器没有它 代码看起来像 dw_1.dataobject = 'dw_new_dataobject' (不是动态分配)
我们尝试了什么?
我们尝试了 IsNull(idw_requestor.object.datawindow.help.command) 或 IsNull(idw_requestor.object.datawindow),但没有成功。即使这确实有效,我们也需要在 PFC 中包含与 datawindow 属性相关的每个点符号分配。
我应该知道如何解决这个问题,但画一个空白。是否有一个简单的编码检查我们可以用来验证分配的数据对象是否存在于构建中,如果没有优雅地处理问题?
理想情况下是这样的伪代码:
If dw_1.databoject = 'dw_new_object' And
'dw_new_object' is nowhere to be found Then
// handle somewhat gracefully and kill the app
End If
对象:pfc_n_cst_dwsrv_sort 错误:在对象的函数 of_setstyle 中的空对象引用...
PFC 代码(众多故障点之一):
// Check to see if the passed style number is valid.
IF IsNull(ai_style) THEN
Return -1
End If
CHOOSE CASE ai_style
CASE DEFAULT, DRAGDROP, SIMPLE, DROPDOWNLISTBOX
ii_style = ai_style
if ii_style = DEFAULT then
if isValid (idw_requestor) then
if len (idw_requestor.dataobject) > 0 then
// NULL OBJECT REFERENCE LINE BELOW when dataobject gone
idw_requestor.object.datawindow.help.command = 1
idw_requestor.object.datawindow.help.file = "pfcdlg.hlp"
idw_requestor.object.datawindow.help.typeid.setsort = "1200" idw_requestor.object.datawindow.help.typeid.setsortexpr = "800"
end if
end if
end if
Return 1
END CHOOSE