学习QTP,VBS脚本很重要,但是在学习zzxxbb大神的博客时,发现dictionary讲解不够详细,我就顺便寻思了一下,找了上善若水的博客,先搬过来,慢慢补充。
vbs中,dictionary对象是我非常钟爱的一个对象,
这篇文章不是详解dictionary的,只是说我用它的一些心得:
set d=createobject("scripting.dictionary")
d.add key,item
它用起来相当方便,
尤其对于储存,查找数据。
举个例子:
d.add t1,f1
d.add t2,f2
d.add t3,f3
d.add t4,f4
........
t=d.keys
f=d.items
就这么几句,就构建了两个一维数组,
从而不用再去构建一个二维数组了,
在对f,t进行处理,非常的方便.
dictionary中的key是不能重复的,
虽然这样,
我们可以用一个循环,把key设为数字,循环一次就增加一,
举个例子,将每个磁盘盘符赋值给disk(i):
set fso=createobject("scripting.filesystemobject")
set d=createobejct("scripting.dictionary")
set ds=fso.drivers
for each di in ds
d.add i,di.driveletter
i=i+1
next
disk=d.items
就这样就完事了!
如果再加一段,disk的数量有所增加(注意哈,这就是u盘,移动磁盘或手机卡之类的),
就可以调用dos的xcopy进行拷贝(这儿用xcopy,一是因为方便,二是因为不怕错误),
如过被拔了,就会检测不到那个盘符,
又可以用d.remove将它移除,
如果让以上的程序循环隐藏执行,并且加成开机自动启动,
这vbs的功能就是…… 呵呵!
有时,处理文件(夹)用上dictionary也是非常的方便
所以,用dictionary来处理文件,有时会相当的方便
当然,用dictionary来处理数学问题,也会相当的方便:
set d=createobject("scripting.dictionary")
a=inputbox("输入一个数字")
if not isnumeric(a) then
msgbox "你输入的不是数字"
else
a_0=a
b=a-1
for i=2 to b
do while a_0 mod i = 0
t=t+1
d.add t,i
a_0=a_0/i
loop
next
ar=d.items
s=join(ar,"*")
if s="" then
s="不能分解"
else s=a+"="+s
end if
msgbox s
end if
这是一段分解质因数的vbs,
每检测到一个能被整除的因数后,
就直接d.add给加上,这儿也用了让key不断加1的方法,
这样就会使逻辑变得很清晰,
当处理稍微复杂一点的问题是,清晰的逻辑是相当重要的.
再比如说:
一堆钢管,2米的5根,3米的4根,4.6米的4根,.............要求详细列出数据并求和,
d.add 2,5
d.add 3,4
d.add 4.6,4
ar=d.keys
arr=d.items
for i=0 to d.count-1
s=s&ar(i)&" "&arr(i)&" "&ar(i)*arr(i)&chr(13)
next
msgbox s
这样逻辑显得很清晰,虽然这只是一个简单的例子.
如果复杂一点,这个清晰的逻辑就会帮助你更好的解决问题.
所以,我对dictionary对象很钟爱.