我正在尝试获取多个对象的inlinks和outlinks中的属性,我的目标是不再通过将读取模块存储在跳过列表中并在读取之前检查跳过列表来重新读取同一模块模块下一次。
所以我的问题是如何获取我已经存储在跳过列表中的模块名称的数据(如果它之前已经打开过的话)? 如果先前打开过该模块,那么m2 =模块项str2是否足以取代读取功能?
下面是我尝试获取对象的inlinks的属性:
Skip sInlink = create()
void get_object_inlinks (Object obj)
{
string str, str2
LinkRef lk = null
Object o = null
for lk in all (obj <- "*") do
{
ModName_ mn = source(lk)
str = fullName(mn)
if (!find(sInlink, str, str2))
{
m2 = read(str, false)
put(sInlink, str, str)
}
else
m2 = module item str2
if (m2 != null)
{
o = gotoObject(sourceAbsNo(lk), m2)
// get object o attributes
...
}
}
}
答案 0 :(得分:0)
您是否有理由不想重新阅读模块?模块打开后,再次读取模块不会重新打开模块,除非您每次都关闭它。
然而,另一种方法是将模块句柄存储在跳过列表中而不是模块名称中。
put(sInlink, str, m2)
然后代替:
if(!find(sInlink, str, str2))
使用:
if(!find(sInlink, str, m2))
如果找到str
,它会将模块句柄放在m2
中,否则您可以继续阅读。
如果你还没有这个,你应该遍历跳过列表并关闭代码末尾的所有模块。
for m2 in sInlink do
{
if(!null m2) close m2
}
祝你好运!