我需要在安装过程中将以下值写入注册表:
[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,所以输入如下:
我该怎么做?
答案 0 :(得分:1)
一种方法可能是在编译时用StringChange
函数替换\01
序列的所有出现。虽然我找不到如何在不关闭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
函数。