我需要在安装过程中将以下值写入注册表:
[Registry]
Root: HKCU; Subkey: "Software\Apt\TCM\Tables\Standard"; ValueType: string; ValueName: "Campaign planner"; ValueData: "Sent letter #1¦TOGGLE:TICK2¦1500\01Follow-up call¦TOGGLE:TICK2¦1500\01¦SPACE¦45\01Sent letter #2¦TOGGLE:TICK2¦1500\01Follow-up call¦TOGGLE:TICK2¦1500\01¦SPACE¦45\01Notes¦¦4000"
但是在显示“ \ 01”的地方,我需要写ASCII字符01,因此应这样输入:
我怎样才能做到这一点?
一种方法可能是在编译时\01
用StringChange
函数替换序列中所有出现的内容。尽管在不关闭Pascal样式字符串文字的情况下,我无法找到一种方法来转义SOH(ASCII字符1),但这可以完成此工作:
#pragma parseroption -p-
[Registry]
...; ValueData: "{#StringChange('Lorem ipsum\01dolor sit amet', '\01', '\x01')}"
但是,上面的代码在我看来过于复杂。如果您不介意所有反斜杠转义的字符都将求值为其对应的字符,则可以定义一个将其转义的变量:
#pragma parseroption -p-
#define MyValue "Lorem ipsum\01dolor sit amet"
[Registry]
...; ValueData: "{#MyValue}"
但要注意,它适用于所有反斜线字符一样\02
,\03
和所有他们各自的符号,这可能并不总是适合您的恒定值。
尽管如此,作为找到代码部分及其StringChangeEx
功能的最可靠方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句