Qu@dr0,
Код:

[code]
const
CP_ACP = 0;
CP_UTF8 = 65001;
var
RevEmuPage: TInputQueryWizardPage;
ConvertCheckBox: TCheckBox;
function MultiByteToWideChar(CodePage: UINT; dwFlags: DWORD; lpMultiByteStr: PAnsiChar; cbMultiByte: Integer; lpWideCharStr: PAnsiChar; cchWideChar: Integer): Longint;
external 'MultiByteToWideChar@kernel32.dll stdcall';
function WideCharToMultiByte(CodePage: UINT; dwFlags: DWORD; lpWideCharStr: PAnsiChar; cchWideChar: Integer; lpMultiByteStr: PAnsiChar; cbMultiByte, lpDefaultChar, lpUsedDefaultChar: Integer): Longint;
external 'WideCharToMultiByte@kernel32.dll stdcall';
function StringToWideString(const aStr: String; codePage: Word): String;
var
len: Integer;
begin
len := MultiByteToWideChar(codePage, 0, aStr, -1, '', 0);
if len > 0 then
begin
SetLength(Result, (len*2)-2);
MultiByteToWideChar(codePage, 0, aStr, -1, Result, Length(Result));
end;
end;
function WideStringToString(const wStr: String; codePage: Word): String;
var
len: Integer;
begin
len := WideCharToMultiByte(codePage, 0, wStr, -1, '', 0, 0, 0);
if len > 0 then
begin
SetLength(Result, len-1);
WideCharToMultiByte(codePage, 0, wStr, -1, Result, Length(Result), 0, 0);
end;
end;
function SetNickname(Nickname: String; IsConvert: Boolean): String;
begin
Result := Nickname;
if IsConvert then Result := WideStringToString(StringToWideString(Result, CP_ACP), CP_UTF8);
end;
procedure NicknameOnChange(Sender: TObject);
begin
WizardForm.NextButton.Enabled := RevEmuPage.Values[0] <> '';
end;
//
procedure InitializeWizard();
begin
RevEmuPage := CreateInputQueryPage(wpInfoAfter, 'Настройка RevEmu', '', 'Пожалуйста, введите данные профиля и нажмите Далее.');
with RevEmuPage do
begin
Add('Ник:', False);
Edits[0].OnChange := @NicknameOnChange;
end;
ConvertCheckBox := TCheckBox.Create(WizardForm);
with ConvertCheckBox do
begin
Parent := RevEmuPage.Surface;
SetBounds(RevEmuPage.Edits[0].Left, RevEmuPage.Edits[0].Top + ScaleY(40), ScaleX(200), ScaleY(17));
Caption := 'Сохранить в UTF-8';
end;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = RevEmuPage.ID then WizardForm.NextButton.Enabled := RevEmuPage.Values[0] <> '';
if CurPageID = wpFinished then SetIniString('steamclient', 'PlayerName', SetNickname(RevEmuPage.Values[0], ConvertCheckBox.Checked), ExpandConstant('{app}\rev.ini'));
end;