/*
Array.nsh可以为NSIS提供数组支持,原生的NSIS是不支持数组操作的,所以要想实现NSIS的数组操作可以借助其他插件或头文件.
如何使用Array:
1.创建一个数组对象:
${Array} myArray #必须声明在Functions和Section之外.并且要在头文件之后.
${myArray->Init} #初始化一个数组,必须在Function或Section之内.
$myArray_UBound #数组最大下标值
${myArray->Destroy} #释放数组内存资源
${myArray->Set} #替换数组指定下标元素
${myArray->Get} #获得数组指定下标元素值
${myArray->Shift} #向数组末尾附加元素(速度快)
${myArray->Unshift} #删除数组末尾元素,并将元素赋给一个变量保存
${myArray->Push} #向数组的头部插入元素(速度慢)
${myArray->Pop} #从数组的头部删除元素(速度慢)
${myArray->Put} #向数组指定位置插入元素
${myArray->Slice} #将指定位置元素删除并将值赋给一个变量保存
${myArray->Delete} #删除指定元素
${myArray->Clear} #清空数组内的所有数据
${myArray->Reverse} #将数组的所有元素倒序排列
${myArray->Copy} #将数组的整个复制给另一个数组可以选择"w|a"覆盖|附加
${myArray->Exists} #查找数组中的元素,对查找结果进行跳转处理,必须用标签不可以用相对跳转如0 +2
*/
!include "Array.nsh"
!include "Logiclib.nsh"
OutFile "Array_www.yhxs3344.net.exe"
ShowInstDetails show
${Array} firstArray #声明一个数组对象
${Array} secondArray
Section "永恒心锁"
${firstArray->Init} #初始化数组
${secondArray->Init}
##赋值,向数组中加元素
${firstArray->Shift} "zero"
${firstArray->Shift} "one"
${firstArray->Shift} "two"
#替换数组下标为1的数组
${firstArray->Set} 1 "Replace"
#删除数组末尾元素,并将元素赋给一个变量保存
${firstArray->Unshift} $0
DetailPrint "{firstArray->Unshift} $0"
#向数组的头部插入元素(速度慢)
${firstArray->Push} "front"
#从数组的头部删除元素(速度慢)
${firstArray->Pop} $0
Detailprint "{firstArray->Pop} $0"
#向数组指定位置插入元素
${firstArray->Put} 1 "Insert"
#将指定位置元素删除并将值赋给一个变量保存
${firstArray->Slice} 1 $0
DetailPrint "{firstArray->Slice} $0"
DetailPrint "#遍历数组中的元素"
StrCpy $R0 $firstArray_UBound #数组内容范围存放在$firstArray_UBound变量中
${While} $R0 >= 0
${firstArray->Get} $R0 $R1
Detailprint "$firstArray[$R0] == '$R1'!"
IntOp $R0 $R0 - 1
${EndWhile}
DetailPrint "#获得数组中的元素个数"
IntOp $R0 "$firstArray_UBound" + 1
Detailprint "Count($firstArray) == $R0"
#将数组的所有元素倒序排列
${firstArray->Reverse}
#将数组的整个复制给另一个数组可以选择"w|a"覆盖|附加
${firstArray->Copy} secondArray a
#查找数组中的元素,对查找结果进行跳转处理,必须用标签不可以用相对跳转如0 +2
${firstArray->Exists} "Replace" label1 label2
label1:
DetailPrint "#遍历数组中的元素"
StrCpy $R0 $secondArray_UBound #数组内容范围存放在$firstArray_UBound变量中
${While} $R0 >= 0
${secondArray->Get} $R0 $R1
Detailprint "$secondArray[$R0] == '$R1'!"
IntOp $R0 $R0 - 1
${EndWhile}
label2:
#清空数组内的所有数据
${firstArray->Clear}
${secondArray->Clear}
#释放数组内存资源
${firstArray->Destroy}
${secondArray->Destroy}
SectionEnd
© 版权声明
THE END
暂无评论内容