IOSetRemoteReferences() 函数
- Last UpdatedJun 01, 2022
- 1 minute read
在 InTouch 应用程序运行期间,可以使用 IOSetRemoteReferences() 脚本函数将 Application Server 对象引用或远程引用重定向到标记。IOSetRemoteReferences() 查找与指定的字符串匹配的所有远程引用,并根据指定的参数值来更改这些引用。您可以创建这样的脚本:它根据满足的条件或用户的动作来触发重定向引用的函数。
类别
其它
语法
IOSetRemoteReferences(BaseAccess, NewAccess, MatchString, SubstituteString, Mode)
参数
BaseAccess
此字符串参数指定配置的原始“访问名”,此访问名要在引用中进行匹配。
NewAccess
新的“访问名”。新的“访问名”应用于满足以下条件的所有引用:原始“访问名”与 BaseAccess 提供的字符串匹配,并且原始“项目名”与 MatchString 值(如果有指定)匹配。
MatchString
引用中配置的原始“项目名”所要匹配的字符串。如果 MatchString 值是空字符串,则视为同任何“项目名”都匹配。
SubstituteString
要替换原始“项目名”的字符串。此字符串会替换 MatchString 值,以便为引用创建新的活动“项目名”。如果 SubstituteString 是空字符串,则不进行替换。
模式
确定对配置的原始“项目名”与 MatchString 值进行比较时要使用的方法。匹配操作总是从“项目名”的开头进行。Mode 值为 0 时,指定必须匹配整个“项目名”,或是匹配到名称中的英文句号 (.)。Mode 值为 1 时,指定允许部分匹配,即便下一个字符不是英文句号。
附注
IOSetRemoteReferences() 不会在更改对象引用之前检查新的标记或“访问名”是否有效。
-
IOSetRemoteReferences() 只更改远程引用。函数重定向满足以下条件的那些引用:配置的原始“访问名”与 BaseAccess 参数指定的值匹配,并且原始“项目名”与 MatchString 值匹配。
-
只需调用一次 IOSetRemoteReferences(),便会影响内存中的活动窗口中满足以下条件的所有远程引用:配置的原始名称字符串与指定给 BaseAccess 和 MatchString 参数的值匹配。
-
如果没有给 BaseAccess 参数指定任何值,则 IOSetRemoteReferences() 不会重定向任何远程引用。
-
如果 MatchString 参数为空,则 IOSetRemoteReferences() 重定向满足以下条件的所有远程引用:原始访问名与指定给 BaseAccess 参数的值匹配。
-
Mode 参数设置为 0 时,仅替换完整对象名(或标记)或完整属性名(或点域)中的“项目名”。MatchString 参数的值必须与整个原始“项目名”匹配,或是匹配到英文句号前的一个字符。
-
Mode 参数设置为 1 时,如果项目字符串以匹配项目字符串开头,则允许对项目字符串进行部分替换。也就是说,MatchString 必须与原始项目字符串的某个部分匹配,但这个部分必须从项目字符串的开头部分开始。匹配字符串中的最后一个字符后不必是英文句号。
-
给远程引用配置的原始名称保持不变。对 IOSetRemoteReferences() 的后续调用不需要识别当前的活动名称。对 IOSetRemoteReferences() 的调用可以按任何顺序进行。
-
如果让两个或更多的窗口指向同一个远程引用,则该远程引用的作用类似于 I/O 标记。对它进行重定向时,所有的窗口都会看到相同的内容。请勿使用单个名称来同时指向两个单独的目标。
备注:同时更改许多个引用(例如在“显示时”窗口脚本中)时,可能需要一些时间才能完成对所有引用的解析。
示例
下例将满足以下条件的所有远程引用重定向到 Galaxy“访问名”的 pump001 项目名:原始项目名与 pumpX 完全匹配。
IOSetRemoteReferences("Galaxy","","pumpX", "pump001",0);
下例将项目名与 pumpX 完全匹配的 Galaxy“访问名”更改为 TagServer1。此外,项目名也更改为 p2。
IOSetRemoteReferences("Galaxy","TagServer1", "pumpX","p2",0);
下例在项目名是 pumpX 时将 TagServer1“访问名”更改为 TagServer2。此外,项目名也更改为 backpump3。
IOSetRemoteReferences("TagServer1","TagServer2", "pumpX","backpump3",0)
下例将 TagServer1“访问名”的 Tank 项目名更改为 Plant。
IOSetRemoteReferences("TagServer1","","Tank", "Plant",1)
因为没有给 BaseAccess 参数指定任何值,下例不会重定向任何远程引用。
IOSetRemoteReferences("","Galaxy","pumpX", "pump001",0);