gpt4 book ai didi

inno-setup - Inno Setup 消息参数

转载 作者:行者123 更新时间:2023-12-01 00:49:43 27 4
gpt4 key购买 nike

在“消息”文件下的 Inno Setup 帮助中,我发现了这一点:

Some messages take arguments such as %1 and %2. You can rearrange the order of the arguments (i.e. move the %2 before a %1) and also duplicate arguments if needed (i.e. "%1 ... %1 %2"). On messages with arguments, use two consecutive "%" characters to embed a single "%". "%n" creates a line break.



在“自定义消息”下:

Messages may take arguments, from %1 up to %9. You can rearrange the order of the arguments (i.e. move the %2 before a %1) and also duplicate arguments if needed (i.e. "%1 ... %1 %2"). On messages with arguments, use two consecutive "%" characters to embed a single "%". "%n" creates a line break.



但是......对于我的生活,我不知道如何使用这些......到目前为止我已经看到 %1 工作(转换为应用程序名称)但是当我将 %1 更改为 %2(最多 - % 9) 它只是显示为 %2, %3, %4 等等....

我只是好奇 - 我如何使用这些参数,它们被分配在哪里?

干杯,

最佳答案

tl;博士

对于 [Messages]它们是硬编码的和特定于消息的部分,可能没有记录。对于 [CustomMessages]由你决定。

1. [Messages] 部分的参数是什么?

对于 [Messages]这部分很难回答,因为它在源代码中是硬编码的,并且特定于每条消息,因此它是一种移动目标。如果您搜索 FmtSetupMessage,就可以找到它们。和 FmtSetupMessage1源 *.pas 文件中的字符串。这些是消息格式化和传递参数的地方。我不知道是否有这方面的文档,所以我会继续搜索源代码。这里有一些关于要搜索的功能。

1.1 FmtSetupMessage 函数

第一个函数 FmtSetupMessage可以接受多个参数,它的调用可以这样读:

FmtSetupMessage(msgSomeMessageId, ['Argument 1', 'Argument 2'])

[] 包围的(逗号分隔的)常量数组括号是按顺序的参数 %1..%n .如果 msgSomeMessageId消息有翻译,说:
Lorem %2 ipsum dolor sit %1 amet.

然后使用上面的示例调用将被格式化为:
Lorem Argument 2 ipsum dolor sit Argument 1 amet.

真正的 Inno Setup 源代码中每个参数的含义应该很容易找到,但至少需要 Pascal 语言的基本阅读能力。

1.2 FmtSetupMessage1 函数
FmtSetupMessage1更容易阅读,因为它只需要一个参数, %1争论:
FmtSetupMessage1(msgSomeMessageId, 'Argument')

因此,由 FmtSetupMessage1 格式化的消息函数很可能只包含 %1争论。

2. [CustomMessages] 部分的参数是什么?
[CustomMessages]的原理部分提供了一种定义自定义消息的方法,其中包括您传递给它们以格式化输出字符串的参数。因此,您将通过以下任何一种方式传递什么完全取决于您。

2.1 脚本部分中的 {cm:...} 常量

在脚本部分,您可以使用 {cm:...} 常量,您可以在其中将参数作为消息名称后的逗号分隔列表传递。例如这个:
[CustomMessages]
MyMessage=Lorem %2 ipsum dolor sit %1 amet.

[Run]
; ↓ Name ↓ %1 ↓ %2
Filename: "{app}\MyApp.exe"; Description: "{cm:MyMessage,Argument 1,Argument 2}"

将导致此格式化消息:
Lorem Argument 2 ipsum dolor sit Argument 1 amet.

{cm:...}常量格式比这更复杂,我会推荐你​​帮助了解详细信息。

2.2 [Code]部分的FmtMessage函数

[Code]您可以使用 FmtMessage 部分函数来格式化具有这种参数支持的消息。要获取自定义消息,您可以使用 CustomMessage 功能。这是一个与上述结果相同的简短示例:
[CustomMessages]
MyMessage=Lorem %2 ipsum dolor sit %1 amet.

[Code]
procedure InitializeWizard;
var
S: string;
begin
// ↓ Name ↓ %1 ↓ %2
S := FmtMessage(CustomMessage('MyMessage'), ['Argument 1', 'Argument 2']);
MsgBox(S, mbInformation, MB_OK);
end;

关于inno-setup - Inno Setup 消息参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31899311/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com