Array数组操作增改删NSIS数组插件

/*
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
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容