51Testing软件测试论坛

标题: [求助]请问tsl中求数组长度的函数是什么? [打印本页]

作者: maonan0001    时间: 2005-8-25 15:49
标题: [求助]请问tsl中求数组长度的函数是什么?
现在遇到问题,我在tsl 手册中怎么也没找到答案,恳请大虾小小的回答以下.

我有数组a[];
欲求数组a的元素个数,在c里面是用count函数的,tsl里面没有这个函数.
请教一下,是用什么函数,还是说tsl没有这个函数需要自己写?
作者: maonan0001    时间: 2005-8-26 14:31
哪位大虾指点一下~
作者: bunny    时间: 2005-10-18 15:50
关注中,有哪位同仁解决此问题的
共享下解决方法

[ Last edited by bunny on 2005-10-18 at 15:53 ]
作者: aswoon911    时间: 2005-10-18 17:49
举例回答你的问题:


static hosts [ ] ={10,13,23,233};
for(i in hosts)

report_msg(hosts[i]);

#数组下标从0开始
report_msg("数组含有元素个数为"&(i+1));
作者: aswoon911    时间: 2005-10-18 17:50
运行一下脚本就会理解了
作者: aswoon911    时间: 2005-10-18 18:36
顺便说一下:
如果脚本中数组下标这么定义,就不能这么用了:
static hosts [] ={"i"=101,"j"=100,"k"=1000};
report_msg(hosts["i"]);
report_msg(hosts["j"]);
report_msg(hosts["k"]);

这时只能一个下标一个下标的找(因为此时的下标是字符):
if  ("i" in hosts)
计数加1;
if  ("j" in hosts)
计数加1;
if  ("k" in hosts)
计数加1;


呵呵,所以还是做好不要这样定义数组.

[ Last edited by aswoon911 on 2005-10-18 at 18:38 ]
作者: 迎风    时间: 2005-10-18 19:01
原来是这样实现的啊,呵呵,看了TSL参考手册中操作符in的用法后,终于了解了。谢谢楼上的前辈~
作者: johngan    时间: 2005-10-19 10:06
你的方法是问题的:
在TSL对IN操作苻的解释有这样的话:The order in which the subscripts are read is undefined.
我在第一个脚本的基础上改了下:
static hosts [ ] ={10,12,13,3,1,233};
for(i in hosts)
report_msg(i);
for(i in hosts)
report_msg(hosts[i]);

#数组下标从0开始
report_msg("数组含有元素个数为"&(i+1));

大家运行下就知道原因了。
作者: aswoon911    时间: 2005-10-19 10:40
To:迎风
呵呵,哪里敢当前辈,大家一起讨论嘛,互相学习.

To:johngan
嗯,真的有问题,以前用的都倏忽了,奇怪以前怎么没发现.

想想改进方法:
static hosts [ ] ={10,12,13,3,1,233};
for(i in hosts)
report_msg(i);
max_dimension=0;
for(i in hosts)
{if(i>max_dimension)
  max_dimension=i;
report_msg(hosts[i]);
}

#数组下标从0开始
report_msg("数组含有元素个数为"&(max_dimension+1));

不知可否?
作者: 迎风    时间: 2005-10-19 10:59
原来通过in操作符取得的i值并不确定,因为每次循环i都是取数组中的随机(即不确定)位置,因此最后一次的i值也只是数组中的某位置下标值,并不是数组中元素的个数。既然这样,可以通过设置一个计数变量嵌在for循环中来实现计数,比如:

static hosts [ ] ={10,12,13,3,1,233};

#设置计数变量并初始化
count=0;

for(i in hosts)
{
        report_msg(hosts[i]);
        count=count+1;
}
#数组下标从0开始
report_msg("数组含有元素个数为"&count);
作者: johngan    时间: 2005-10-19 11:02
可以了。以后要多讨论啊
上面的也是好方法啊~

[ Last edited by johngan on 2005-10-19 at 11:05 ]
作者: 迎风    时间: 2005-10-19 11:30
to:aswoon911

前辈客气了,因为偶才刚刚开始自学WR与TSL,因此这里的大家都是前辈,希望以后在学习或实践过程中碰到问题能向你们请教与交流,谢谢~

to:johngan

谢谢你提醒,昨天的确没注意到in的细节,看来读英文文档还是不能马虎啊。以后一定多交流,握手~
作者: johngan    时间: 2005-10-19 11:42
你专门做测试的吗?我是刚刚起步啊,很多不明白啊,谢谢了
作者: 迎风    时间: 2005-10-19 11:50
以前做过几个小项目中间件的开发与测试,现在是专门做测试的了,但自动化测试这块还不熟悉,尤其是MI的主流商业工具与TSL,现在开始自学。那以后经常交流了,请大家多多关照^^
作者: johngan    时间: 2005-10-19 12:33
我MSN:gly-88888@163.com
作者: hu261261    时间: 2006-7-26 20:13
对于二维数组如何取得行数与列数呢?




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2