Inno[Code]代码段获取[Setup]段关键字值的方法

在[Code]字段这样写 使用Inno制作安装包,活用[Code]字段的代码可实现很多功能,在编写Pascal代码时,可能会用到[Setup]字段的先的一些关键字,如:AppId={{30E1A3ED-7869-4C99-A426-D331A221234A},可能你会需要获得这个GUID字符串来执行卸载


在stackoverflow上搜索一下,找到了答案:

http://stackoverflow.com/questions/1926164/innosetup-getting-appname-in-code-section


大致三种方法:

1.比较“笨”的方法,定义一个常量来保存这个AppId的值

#define AppName "{30E1A3ED-7869-4C99-A426-D331A221234A}" 

[Setup]字段这样写

AppName={#AppName}

[Code]字段

MyString :=ExpandConstant(‘ {#AppName}’);


2.使用#emit预处理器

在[Code]字段这样写  MyString := ExpandConstant('{#emit SetupSetting("AppId")}'); MyString的值会是{30E1A3ED-7869-4C99-A426-D331A221234A}


3.最简洁的方法?

在[Code]字段这样写 MyString := '{#SetupSetting("AppId")}',MyString的值会是{{30E1A3ED-7869-4C99-A426-D331A221234A} 注意会比方法二前面多一个‘{’



方法二和方法三基本相同,差距在于获得的字符串前面有几个大括号

Inno的语法中,大括号应该是一种通配符,在定义AppId={{30E1A3ED-7869-4C99-A426-D331A221234A},前面两个大括号实际代表一个大括号,删除一个后,编译会报错


因此,使用方法三时需要注意,实际上该方法获得的值并不正确,常使用C++的可能会很熟悉这种感觉:"\\"与“\”的用法区分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值