Dictionary 对象使用详解
本帖最后由 chishingchan 于 2013-2-22 17:26 编辑本人N年前已开始接触 VBScript 脚本编程,关于 VBScript 的资料官方及网络可谓十分的丰富,所以学习起来很容易上手!前几年认识了 AutoIt 后,觉得后者比前者更有界面上的优势,后来就开始慢慢的学习 AutoIt 编程。AutoIt 应该可以将 VBScript 的可用对象之类的东东转移到 AutoIt 上使用,例如:Dictionary 对象。觉得 Dictionary 对象比数组处理的方便容易。以下内容是根据微软官方提供的资料整理出来的,比较易懂!本人检阅了一下,如有错漏在所难免,请指正。
Dictionary 对象
描述
保存数据键和项目对的对象。
语法
Scripting.Dictionary
说明
Dictionary 对象与 PERL 关联数组是等价的。项目(可以是任何形式的数据)被保存在数组中。每项都与唯一的键相关联。键值用于检索单个项目,通常是整数或字符串,但不能为数组。
创建 Dictionary 对象:Dim $Object
$Object = ObjCreate("Scripting.Dictionary");创建 Dictionary 对象CompareMode 属性
描述
设置并返回在 Dictionary 对象中比较字符串关键字的比较模式。
语法
$Object.CompareMode[ = compare]
CompareMode 属性有以下部分:
部分 描述
$Object 必选。Dictionary 对象的名称。
compare 可选。如果提供此参数,compare 参数为数值,表示由函数如 StrComp 使用的比较模式。
设置
compare 参数设置如下:
常量 值 描述
$BinaryCompare 0 执行二进制比较.
$TextCompare 1 执行文本比较.
说明
大于 2 的值可用来进行使用区别 Ids 的比较 (LCID)如果试图更改已经包含数据的 Dictionary 对象的比较模式,则会出现错误。
CompareMode 属性使用与 StrComp 函数中 compare 参数相同的值。Const $BinaryCompare = 0
Const $TextCompare = 1
Dim $Object
$Object = ObjCreate("Scripting.Dictionary");创建 Dictionary 对象
$Object.CompareMode = $TextCompare;比较模式
$Object.Add("a", "第一行");添加键(Key)和项目(Item)
$Object.Add("b", "第二行")
$Object.Add("B", "第三行");因文本比较模式,且存在b键,此行添加失败
.
.
.Count 属性
描述
返回一个集合或 Dictionary 对象包含的项目数。只读。
语法
$Object.Count
$Object 可以是“应用于”列表中列出的任何集合或对象的名称。
说明
以下代码举例说明如何使用 Count 属性:Dim $Object,$Count
$Object = ObjCreate("Scripting.Dictionary");创建 Dictionary 对象
$Object.Add("a", "第一行");添加键(Key)和项目(Item)
$Object.Add("b", "第二行")
$Count = $Object.Count -1
MsgBox(0,"$Object.Count",$Count)Item 属性
描述
设置或返回 Dictionary 对象中指定的 key 对应的 item,或返回集合中基于指定的 key 的 item。可读写。
语法
$Object.Item(key) [= newitem]
Item 属性的语法有以下部分:
部分 描述
$Object 必选。应为集合或 Dictionary 对象的名称
key 必选。与检索或添加的 item 相关联的 key。
newitem 可选。仅用于 Dictionary 对象,不能应用于集合。如果提供此参数,则 newitem 是与指定的 key 相关联的项目的新值。
说明
如果更改 item 时未找到 key,则使用指定的 newitem 创建一个新的 key。如果试图返回一个已有项目时未找到 key,则创建一个新的 key 并且它对应的项目为空值。Dim $Object,$Key
$Object = ObjCreate("Scripting.Dictionary");创建 Dictionary 对象
$Object.Add("a", "第一行");添加键(Key)和项目(Item)
$Object.Add("b", "第二行")
$Key = $Object.Item("b");得到项目值
MsgBox(0,"$Object.Item",$Key)Key 属性
描述
在 Dictionary 对象中设置 key。
语法
$Object.Key(key) = newkey
Key 属性结构如下:
参数 描述
$Object 必选。通常是 Dictionary 对象的名称。
key 必选。要改变的 Key 值。
newkey 必选。代替指定 key 值的新值。
说明
如果在更改 key 值时未找到 key,则出现运行时错误。
下面例子举例说明如何使用 Key 属性:Dim $Object,$Item
$Object = ObjCreate("Scripting.Dictionary");创建 Dictionary 对象
$Object.Add("a", "第一行");添加键(Key)和项目(Item)
$Object.Add("b", "第二行")
$Object.Key("b") = "c";将"b"的键设置为"c"
$Item = $Object.Item("c");返回相关项目
MsgBox(0,"$Object.Item",$Item)Add 方法
描述
向 Dictionary 对象添加键和项目对。
语法
$object.Add(key,item)
Add 方法的语法有以下部分:
部分 描述
$object 必选。应为 Dictionary 对象的名称。
key 必选。与添加的 item 相关的 key。
item 必选。与添加的 key 相关的 item。
说明
如果 key 已经存在,则会出现错误。
下面例子举例说明如何使用 Add 方法:Dim $Object
$Object = ObjCreate("Scripting.Dictionary");创建 Dictionary 对象
$Object.Add("a", "第一行");添加键(Key)和项目(Item)
$Object.Add("b", "第二行")
.
.
.Exists 方法
描述
如果在 Dictionary 对象中存在指定键,返回 True;如果不存在,返回 False。
语法
$object.Exists(key)
Exists 方法的语法有以下部分:
参数 描述
$object 必选。应为 Dictionary 对象的名称。
key 必选。Key 为在 Dictionary 对象中要查找的值。
说明
下面例子举例说明如何使用 Exists 方法:Dim $Object,$Msg
$Object = ObjCreate("Scripting.Dictionary");创建 Dictionary 对象
$Object.Add("a", "第一行");添加键(Key)和项目(Item)
$Object.Add("b", "第二行")
If $Object.Exists("c") Then
$Msg = "指定的键存在。"
Else
$Msg = "指定的键不存在。"
EndIf
MsgBox(0,"$Object.Exists",$Msg)Items 方法
描述
返回一个数组,其中包含有 Dictionary 对象中的所有项目。
语法
$object.Items
$object 应为 Dictionary 对象的名称。
说明
以下代码举例说明如何使用 Items 方法:Dim $Object,$Item,$Msg
$Object = ObjCreate("Scripting.Dictionary");创建 Dictionary 对象
$Object.Add("a", "第一行");添加键(Key)和项目(Item)
$Object.Add("b", "第二行")
$Object.Add("c", "第三行")
$Item = $Object.Items;获取项目
For $i = 0 To $Object.Count -1;循环使用数组
$Msg &= $Item[$i] & @CRLF;创建返回字符串
Next
MsgBox(0,"$Object.Item",$Msg)Keys 方法
描述
返回一数组,其中包含有 Dictionary 对象的所有现存键。
语法
$object.Keys
$object 应为 Dictionary 对象的名称。
说明
下列代码举例说明如何使用 Keys 方法:Dim $Object,$Keys,$Msg
$Object = ObjCreate("Scripting.Dictionary");创建 Dictionary 对象
$Object.Add("a", "第一行");添加键(Key)和项目(Item)
$Object.Add("b", "第二行")
$Object.Add("c", "第三行")
$Keys = $Object.Keys;获取键
For $i = 0 To $Object.Count -1;循环使用数组
$Msg &= $Keys[$i] & @CRLF;创建返回字符串
Next
MsgBox(0,"$Object.Keys",$Msg)Remove 方法
描述
从 Dictionary 对象中删除键和项目对。
语法
$object.Remove(key)
Remove 方法的语法有以下部分:
部分 描述
object 必选。应为 Dictionary 对象的名称。
key 必选。与要从 Dictionary 对象中删除的键和项目对相关联的 Key。
说明
如果指定的键和项目对不存在,则会出现错误。
下列代码示范如何使用 Remove 方法:Dim $Object
$Object = ObjCreate("Scripting.Dictionary");创建 Dictionary 对象
$Object.Add("a", "第一行");添加键(Key)和项目(Item)
$Object.Add("b", "第二行")
$Object.Add("c", "第三行")
$Object.Remove("b");删除第二个键(Key)和项目(Item)
.
.
.RemoveAll 方法
描述
RemoveAll 方法删除 Dictionary 对象中的所有键和项目对。
语法
$object.RemoveAll
$object 应为 Dictionary 对象的名称。
说明
下列代码举例说明如何使用 RemoveAll 方法:Dim $Object
$Object = ObjCreate("Scripting.Dictionary");创建 Dictionary 对象
$Object.Add("a", "第一行");添加键(Key)和项目(Item)
$Object.Add("b", "第二行")
$Object.Add("c", "第三行")
$Object.RemoveAll;清除 Dictionary
.
.
. 本帖最后由 chishingchan 于 2013-2-22 14:34 编辑
要学习 VBScript 或转化 VBScript 脚本到 AutoIt 里使用,查找更多的例子应用,请下载 VbsEdit 5.4.8.0 参考:(附 Patch.vbs 破解脚本)
**** Hidden Message ***** 回复 2# chishingchan
教程,是授人以渔 学习了~~~~~~~ 回复 3# 楼上风云
希望AUTOIT的帮助也能做到跟本文一样的详细内容(包含简单例子)的帮助就好了! 非常不错的软件,写可 非常不错的软件,谢谢楼主啊 非常不错的软件,谢谢楼主啊 来学习学习。 学习了谢谢楼主 谢谢分享! 正想看这方面的资料. 来学习学习 暂时还不理解先做个记号 这个东西很强大,谢谢