Inno setup Inno设置-西里尔文字符串显示为问号

Inno setup Inno设置-西里尔文字符串显示为问号,inno-setup,pascal,pascalscript,Inno Setup,Pascal,Pascalscript,我正在运行以下代码: function CmdLineParamExists(const Value: string): Boolean; var I: Integer; begin Result := False; for I := 1 to ParamCount do begin if CompareText(Copy(ParamStr(I), 1, Length(Value)), Value) = 0 then begin Result := T

我正在运行以下代码:

function CmdLineParamExists(const Value: string): Boolean;
var
  I: Integer;
begin
  Result := False;
  for I := 1 to ParamCount do
  begin
    if CompareText(Copy(ParamStr(I), 1, Length(Value)), Value) = 0 then
    begin
      Result := True;
      Exit;
    end;
  end;
end;

function GetAppName(Value: string): string;
begin
  if CmdLineParamExists('/COMPONENTS=prog2') then
  begin
    Result := 'Программа 2'; //<----This shows up as ????????? 2
  end
    else
  begin
    Result := '{#SetupSetting("AppName")}';
  end;
end;

procedure CurPageChanged(CurPageID: Integer);
var
  S: string;
Begin
if CurPageID = wpSelectDir then
  begin
    S := SetupMessage(msgSelectDirLabel3);
    StringChange(S, '[name]', GetAppName(''));
    WizardForm.SelectDirLabel.Caption := S;
  end;
end;
函数CmdLineParamExists(常量值:字符串):布尔值;
变量
I:整数;
开始
结果:=假;
对于I:=1的参数
开始
如果CompareText(Copy(ParamStr(I),1,Length(Value)),Value)=0,则
开始
结果:=真;
出口
结束;
结束;
结束;
函数GetAppName(值:string):string;
开始
如果CmdLineParameters('/COMPONENTS=prog2'),则
开始

结果:='ППППППаиааааМаа2'// 我假设您使用的是Ansi版本的Inno安装程序

在Ansi版本中,罪魁祸首可能是,因为它不能很好地处理非Ansi字符集。尝试使用


尽管您应该使用Unicode版本的Inno安装程序

只有最新版本的Inno Setup 5.6支持Unicode字符串文字。因此,请确保您拥有最新版本


如果您使用的是旧版本:

  • 将字符串编码为

    #$041F#$0440#$043E#$0433#$0440#$0430#$043C#$0430+“2”
    
  • 或者,实际上最正确的方法是向语言文件中添加新的自定义消息(如
    俄语.isl
    ):

    [自定义消息]
    程序2=ПППБПааМа2
    
    然后像这样加载它:

    CustomMessage('Program2')
    

我假设您使用的是Ansi版本的Inno设置

在Ansi版本中,罪魁祸首可能是,因为它不能很好地处理非Ansi字符集。尝试使用


尽管您应该使用Unicode版本的Inno安装程序

只有最新版本的Inno Setup 5.6支持Unicode字符串文字。因此,请确保您拥有最新版本


如果您使用的是旧版本:

  • 将字符串编码为

    #$041F#$0440#$043E#$0433#$0440#$0430#$043C#$0430+“2”
    
  • 或者,实际上最正确的方法是向语言文件中添加新的自定义消息(如
    俄语.isl
    ):

    [自定义消息]
    程序2=ПППБПааМа2
    
    然后像这样加载它:

    CustomMessage('Program2')
    

好的。。。真是个惊喜。无论如何,我是否可以在代码中加载组件说明,而不是
CustomMessage
?e、 g.在这种情况下,我的部件名称是
prog2
,说明是
。我想避免定义它两次。像
{cm:Program2}
OK那样定义描述。因此,我应该反过来处理这个问题。让我们试试。它很有魅力。我仍然希望我们可以直接在代码中引用组件描述。事实上,我希望我们能参考其他章节的所有内容…那么你会如何翻译这些条目?好的。。。真是个惊喜。无论如何,我是否可以在代码中加载组件说明,而不是
CustomMessage
?e、 g.在这种情况下,我的部件名称是
prog2
,说明是
。我想避免定义它两次。像
{cm:Program2}
OK那样定义描述。因此,我应该反过来处理这个问题。让我们试试。它很有魅力。我仍然希望我们可以直接在代码中引用组件描述。事实上,我希望我们能参考其他章节的所有内容……那么你会如何翻译这些条目呢?