Unc1e Цитата: я ведь совсем недавно спрашивал
-- где спрашивал? Видно я как-то пропустил этот вопрос.
Дело в том, что указанный тобой пример, конвертит не совсем в юникод. С другой стороны, судя по наличию в примере объявления функции MultiByteToWideChar, ход мысли очевидно был правильный
Кстати, а почему не стал делать через MultiByteToWideChar?
0bject Цитата: файл имеет кодировку ANSI, а мне необходимо Unicode
...............
Создал функцию для конвертации строки
function WinToDos
-- так все-таки, сконвертировать надо в юникод или в дос? Если первое, то смотри [more=пример]
[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program
[_Code]
function MultiByteToWideChar(CodePage: UINT; dwFlags: DWORD; lpMultiByteStr: string;
cbMultiByte: integer; lpWideCharStr: string; cchWideChar: integer): integer;
external 'MultiByteToWideChar@Kernel32.dll stdcall';
var
str1, str2, wstr: string;
res: integer;
procedure InitializeWizard();
begin
LoadStringFromFile('C:\TMP\ansi1.txt', str1);
LoadStringFromFile('C:\TMP\ansi2.txt', str2);
str1:= str1+str2;
res:= MultiByteToWideChar(0, 0, str1, (-1), wstr, 0);
wstr:= StringOfChar(#0, res*2 - 2);
res:= MultiByteToWideChar(0, 0, str1, (-1), wstr, res);
wstr:= Chr($FF) + Chr($FE) + wstr;
SaveStringToFile('C:\TMP\unicode2.txt', wstr, False);
end;
[/more] Правда, пример весьма условный (без проверок и пр.). Но принцип, думаю понятен.