/* 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 "python丝酷网" ${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