今天一同事遇到了一个很奇怪的问题,为一winclass声明了一个字符串类型的变量,而这个变量是需要在运行过程中动态得到值的。运行是可以正常运行,但老是报一个错:Warnig: member XX is not defined for window XX, 而且每此调用这个变量都报错,Debug了好久,最后发现是在这个动态获取值的地方出错的。
后来我询问了同事她的意图是什么,原来是要从众多类似的对象中获取tag索引最大的一个对象的值,那么就简单了,我们没有必要动态获得值,用一个multitag就可以解决了。如何用呢?即
TextBox txbGetMax
multitag "#5"
"#4"
"#3"
"#2"
"#1"
这样就Ok了, 为什么呢?因为ST在运行过程中根据multitag的值一个一个遍历下来,那么第一次遍历到的必然就是最大索引的那个了。当然这一方法的局限性还是有的,只能权当一个小技巧使用。呵呵。。。
在用ST的过程中,发现其实它有在运行中智能获取对象的功能(不知道该说法是否准确),比如你把一个对象定义在对象的第三层,但明明是第二层的对象,而且你在脚本中使用的也正是第二层的对象,你会发现在脚本运行过程中还是能正常运行下去的,而只是报一个错:Warning object XX is not defined in windiow XX,也就是说ST在找不到对象的时候还是会自动的向下找匹配的对象。