问题描述
我有一个子例程,我从跳过列表传递一个字符串值。将该值与“门”文件中的对象进行比较。但是比较不起作用。
Skip split (string s,string delim)
{
Skip skp = create
int i = 0
Regexp split = regexp "^(.*?)" delim "(.*)$"
while (split s)
{
string temp_s = s[match 2]
put(skp,i++,s[match 1] "")
s = temp_s
}
put(skp,s "")
return skp
}
string getInfo( string inStr)
{
for currObj in currMod do
{
if ( findplainText( ( currOBJ.SW_VRC ""),inStr,offsetFromFind,lengthFromFind,false ) )
{
print currOBJ.SW_VRC " matches " inStr "\n";
}
}
}
Skip newLst = split(modname,",") // this just splits a string input into parameters separated by commas
string inputInfo;
find(newLst,inputInfo)
getInfo(inputInfo)
现在这是我正在做的简化版本。但是findplainText不匹配任何内容。我检查了inputInfo获取正确的字符串。 真正使我丧命的部分是我是否在参数中硬编码
即inStr =“ 21”;
它的工作原理与预期的一样。 现在我假设一个字符串是一个字符串。跳过列表中的字符串和引用的字符串之间有区别吗?有隐藏的角色吗? 我想念什么?欢迎您提供任何见识。
谢谢, 开发人员
解决方法
您的代码片段有效,但是我必须添加一些变量以使其起作用,而且手头没有拆分功能:
Skip split (string s,string delim)
{
Skip skp = create
int i = 0
Regexp split = regexp "^(.*?)" delim "(.*)$"
while (split s)
{
string temp_s = s[match 2]
put(skp,i++,s[match 1] "")
s = temp_s
}
put(skp,s "")
return skp
}
string SW_VRC="Object Text"
Module currMod = current Module
string getInfo( string inStr)
{
int offsetFromFind,lengthFromFind
string resultString = ""
Object currObj
for currObj in currMod do
{
if ( findPlainText( ( currObj.SW_VRC ""),inStr,offsetFromFind,lengthFromFind,false ) )
{
print currObj.SW_VRC " matches " inStr "\n";
resultString = resultString "\n" currObj.SW_VRC ""
}
}
return resultString
}
string modname = "a,b,cc,ccc,d,e,f"
Skip newLst = split (modname,",")
string inputInfo= "";
find(newLst,inputInfo)
getInfo(inputInfo)
也许在准备此帖子时您删除了太多信息? 还是在newLst中没有键“ 0”的条目?如果您使用
启动功能会怎样?string inputInfo
inputInfo = "21"
getInfo (inputInfo)
?