1

我正在使用 Inno Setup 5.5.2 (u) 并且所有符号都很好,除了TStringList. 我以这种方式初始化列表并添加项目:

Regions := TStringList.Create;
Regions.Add('Аврен');
Regions.Add('Айтос');
Regions.Add('Аксаково');
Regions.Add('Алфатар');
...

但我得到了:

在此处输入图像描述

感谢您查看这个。

4

1 回答 1

4

目前你不能在 Inno Setup 中使用 Unicode 常量。里面有一段关于documentation它的引述(我强调):

Unicode 编译器使用的新 RemObjects PascalScript 版本支持 Unicode,但不支持其输入源。这意味着它确实使用 Unicode 字符串类型,但脚本中的任何文字 Unicode 字符都将转换为 ANSI

这并不意味着您不能显示 Unicode 字符串:例如,您可以使用编码的 Unicode 字符来构建 Unicode 字符串(例如 S := #$0100 + #$0101 + 'Aa';),或者从文件中加载字符串使用 LoadStringsFromFile,或使用 {cm:...} 常量。

因此,根据那里所写的内容,您可以将这些常量字符编码为以下格式:

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program

[Code]
procedure InitializeWizard;
var
  Regions: TStringList;
  ComboBox: TComboBox;
  CustomPage: TWizardPage;
begin
  CustomPage := CreateCustomPage(wpWelcome, 'Caption', 'Description');
  ComboBox := TComboBox.Create(WizardForm);
  ComboBox.Parent := CustomPage.Surface;

  Regions := TStringList.Create;
  try
    Regions.Add(#$0410 + #$0432 + #$0440 + #$0435 + #$043D
    Regions.Add(#$0410 + #$0439 + #$0442 + #$043E + #$0441
    Regions.Add(#$0410 + #$043A + #$0441 + #$0430 + #$043A + #$043E + #$0432 + #$043E
    Regions.Add(#$0410 + #$043B + #$0444 + #$0430 + #$0442 + #$0430 + #$0440
    ComboBox.Items.AddStrings(Regions);
  finally
    Regions.Free;
  end;
end;

或者,您可以通过建议的LoadStringsFromFile函数从外部文件加载区域列表,并使用输出数组填充字符串列表(或直接填充组合框)。

或者你可以制作一个外部custom messages文件。

于 2013-08-19T09:11:37.733 回答