我运行这段代码:Inno Setup的 - 西里尔字符串显示为问号
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;
现在,我不知道我在做什么错在这里。除了当我使用GetAppName
的结果时,其他每个字符串都正确显示。我应该在某些时候将任何东西转换为AnsiString
?
OK ......这是一个惊喜。无论如何,我可以在代码中加载组件描述而不是'CustomMessage'吗?例如在这种情况下,我的组件名是'prog2',描述是'Программа2'。我想避免定义两次。 –
定义类似'{cm:Program2}的描述' –
OK。所以,我应该用另一种方式来解决问题。咱们试试吧。 –