如何将包含 ascii 码的字符串写入注册表?

How to write a string containing ascii codes into the Registry?

我需要在设置过程中将以下值写入注册表:

[Registry]
Root: HKCU; Subkey: "Software\Apt\TCM\Tables\Standard"; ValueType: string; ValueName: "Campaign planner"; ValueData: "Sent letter #1¦TOGGLE:TICK2¦1500Follow-up call¦TOGGLE:TICK2¦1500¦SPACE¦45Sent letter #2¦TOGGLE:TICK2¦1500Follow-up call¦TOGGLE:TICK2¦1500¦SPACE¦45Notes¦¦4000"

但是它说“\01”的地方我需要写ASCII字符01,所以它会这样输入:

我该怎么做?

一种方法可能是在编译时用 StringChange 函数替换所有出现的 </code> 序列。虽然我找不到在不关闭 Pascal 样式字符串文字的情况下如何转义 SOH(ASCII 字符 1)的方法,但这将完成工作:</p> <pre><code>#pragma parseroption -p- [Registry] ...; ValueData: "{#StringChange('Lorem ipsumdolor sit amet', '', '\x01')}"

但是,上面的代码在我看来过于复杂。如果您不介意所有反斜杠转义字符都将计算为其相应的字符,您可以定义一个变量来转义它们:

#pragma parseroption -p-
#define MyValue "Lorem ipsumdolor sit amet"

[Registry]
...; ValueData: "{#MyValue}"

但请注意,它适用于所有反斜杠转义字符,例如 </code>、<code> 及其所有各自的符号,它们可能并不总是适合您的常量值。

不过,作为最可靠的方式,我发现使用代码部分及其 StringChangeEx 功能。