此時您無法在Inno安裝程序中使用Unicode常量。在documentation
有一個關於它的報價(由我強調):由使用
新的RemObjects PascalScript版本Unicode的編譯器 支持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
文件。
因爲Pascal Script編譯器不支持Unicode字符作爲輸入,所以您必須使用編碼的Unicode字符(#$ 0100格式)。 – TLama
@TLama,感謝您關注此事。我無法理解一些東西。我在文檔中看到以下內容:「Unicode編譯器將類型'String'視爲Unicode字符串」。這與你所說的不矛盾嗎? –
是的,它是Unicode字符串,但它不適用於源代碼中的常量。在文檔中還提到* Unicode編譯器使用的新RemObjects PascalScript版本支持Unicode,* ***,但不支持其輸入源***。 *這意味着它確實使用了Unicode字符串類型,但是* ***腳本中的任何文字Unicode字符將被轉換爲ANSI ***。這並不意味着您不能顯示Unicode字符串:例如,您可以使用編碼的Unicode字符來構建Unicode字符串(如S:=#$ 0100 +#$ 0101 +'Aa';)*。 – TLama