1

我想在 DXL 中编写一个循环,从名为“req”的对象链接的每个对象中读取一些内容。

天真的解决方案,省略 req 的初始化,将是这样的:

Object req 
Object parent
Link baselink

for baseLink in req -> "*" do{
        parent = target(baseLink)
        ...
}

除非这些“父”对象所在的所有模块都已打开,否则这不起作用。对于任何仍未打开的,“父”变量只接收一个 Null 值。

鉴于这种情况,我想要一种以编程方式打开它们的方法。

DXL 参考手册提供了一个仅适用于传入链接(来自“子”对象)的解决方案:

ModName_ srcModRef
for srcModRef in o<-"*" do
    read(fullName(srcModRef), false)

不幸的是,我找不到传出链接的解决方案。在上面的示例中将“<-”替换为“->”会失败。我在手册和网络上搜索过。

我想避免打开整个链接模块指向的所有链接,因为这涉及其他来源。

有人知道如何以编程方式打开对象链接的所有模块吗?我怀疑有没有办法在不打开它所在的模块的情况下访问一个对象,但这也可以解决我的问题。

4

1 回答 1

2

这是您的解决方案:

Object req
ModName_ parentModName
Module parentMod
Object parent
Link baselink

for baseLink in req -> "*" do{
    parentModName = target(baseLink)
    parentMod = read(fullName(parentModName), false)
    parent = target(baseLink)
    ...
    close parentMod
}

即使模块未打开,您也可以获取 ModName_ 句柄然后打开它。然后就可以得到目标对象的引用了。完成后不要忘记关闭链接的模块以释放资源。

希望这可以帮助!

于 2013-02-20T18:29:21.757 回答