博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NSIS学习-Push&Pop(转发)
阅读量:6654 次
发布时间:2019-06-25

本文共 864 字,大约阅读时间需要 2 分钟。

/*

编写:Ansifa
NSIS除了提供了变量$0~$9,$r0~$r9来存放文字外,还有堆栈,
而通过Push和Pop这两个堆栈操作可以将一些数字或字符暂时存放到堆栈里面
下面是一个简单例子:

实现功能是保护某个变量的值

*/
SetCompressor /SOLID lzma
SetCompress force
XPStyle on
OutFile "aaa.EXE"
Name "aaa"
Section

StrCpy $0 10    ;将10赋给$0

MessageBox MB_OK '"$0-这是赋值得到的"'

Push $0            ;将10压入堆栈

StrCpy $0 5

MessageBox MB_OK '"$0-此时的值是"StrCpy $0 5"赋值得到的,刚才的存在变量$0的10已经覆盖了"'

Pop $0            ;将堆栈的数(刚才压进的10)弹出到$0

MessageBox MB_OK '"$0-这是堆栈弹出的"'

SectionEnd

/*

好,例子看完了,问什么说保护变量的值呢?
本来$0值是一个数X,X未知,设为原始状态,

不过某个时刻因为变量不够用,或者其他原因想使用$0这个变量,

但是$0的X或许以后还要使用,所以在开始使用$0前,将$0用Push $0放入堆栈
使用完后Pop $0,那样就能做到$0使用前后不变了

$0='aaaa' ----这是原始态

........    ----中间代码

Push $0    ----开始使用$0,将要改变他的值
StrCpy $0 5     ---现在改变了$0,如果没有PushPop,以前的'aaaa'就肯定会找不回来了
........    ----中间代码
Pop $0    ----使用完$0,还原他本来值

此时的$0就像没有上面的暂时调用一样.仍然延续原始态
MessageBox MB_OK '$0' ----显示'aaaa'

........    ----中间代码*

转载于:https://www.cnblogs.com/Asee/p/3723697.html

你可能感兴趣的文章
神经网络之模块化视角(一)
查看>>
SDUT OJ 学密码学一定得学程序
查看>>
http一次请求过程
查看>>
数据库操作常用命令
查看>>
移动端Bug管理工具——Bugtags
查看>>
vim实用笔记
查看>>
gentoo安装apache、nginx、php、mariadb、openssl(https)
查看>>
第三课 css样式
查看>>
jquery ajax 回调函数
查看>>
css优先级
查看>>
css颜色表示的方式
查看>>
Mac Apache Maven 配置
查看>>
用户自定义类型03 - 零基础入门学习Delphi33
查看>>
【转载】机器学习——深度学习(Deep Learning)
查看>>
USACO翻译:USACO 2014 JAN三题(2)
查看>>
shared_ptr智能指针源码剖析
查看>>
solr中的一些常见错误
查看>>
java中哪些数值不能被初始化
查看>>
git相关知识
查看>>
JSTL标签总结
查看>>