我是IBM门中DXL编程语言的新手。但是,我认为我设法做了许多有趣的事情:创建模块,创建对象,创建链接,删除对象等。
但是,关于" null"模块,我有一个非常具体的问题。我刚刚在"之间写了null,因为这些模块存在,并且用正确的名称引用了它们。
这样做时:
Module m1 = edit("1. MY_MODULE", false)
save(m1)
close(m1)
出现这样的错误: 在此处输入图像描述
您无法理解这是西班牙语的意思。基本上说明了:"模块null参数在参数的第一个位置中。"这意味着" M1"为null,因为Save((方法的参数为null。
重点是这是一个错误,有时仅出现。似乎该模块是无效的,因为它以前已经打开并且门无法正确关闭。
有什么方法,任何方法...避免此错误的任何方法?
我假设当另一个文件夹处于活动状态时该脚本无法找到该模块。尝试
Module m1 = edit ("/myproject/myfolder/mysubfolder/1. MY_MODULE", false)
可能有许多原因是不能在编辑模式下打开该模块。例如:用户没有其他用户正在使用写入访问或模块。
但是,您可以使用以下代码段来解决错误:
Module m = edit('My_module', false)
if(!null m) {
//execute program
...
}
else {
//do something
}
我希望这会有所帮助。
您的脚本如何工作?您是否一次又一次打开同一模块,有时会出现错误,还是打开许多模块,对于其中的一些模块,对于其他模块而言,它没有?在后一种情况下,也许您拼错了道路。您可以添加一些理智检查,例如
string fullPathToMod = "/myproject/myfolder.."
Item i = item fullPathToMod;
if null i then error "there is no item called " fullPathToMod
if "Module" != type i then error "there is an item, but it's not a module, it's a " type i
这是代码结构的方式:
void checkModule(string folderPath, string mName, Skip list, int listSize, int listLastIndex, string headers[], string heading[], string headerKey, bool uniqueKey, string combinedKey[]){
if (module mName){
Folder f = folder(folderPath)
current = f
Module m = edit(folderPath""mName, false)
current = m
Object o = first(m) // error sometimes: Se ha pasado un parametro Module null en una posición de argumento 1
if (o == null){
loadModule(m, list, listSize, listLastIndex, headers, heading)
} else {
updateModule(m, mName, list, listSize, listLastIndex, heading, headerKey, headers, uniqueKey, combinedKey)
save(m)
close(m)
}
if (lastError() != ""){
print "Error: " lastError() "n"
}
} else {
print "No module " mName ".n"
}
}
正好在线破裂:
current = m
,但正如所说的,有时并不总是。顺便说一句,我正在通过Java代码通过批处理执行此脚本。一个奇怪的事情是,如果我关门并执行脚本确实正确执行。好像需要关闭以正确编辑模块。
i Pressume 当前可以多次使用不同类型的项目。我想这应该没错,但是它打破了说(或多或少(:
NULL值传递给DXL Commmand(当前模块(。
显然,这意味着 m 是无效的,但我看不到任何原因。