VBS-Dictionary

学习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对象很钟爱.

posted @ 2012-03-27 19:12  ~乖乖~  Views(2135)  Comments(0Edit  收藏  举报