Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Новый участник


Сообщения: 20
Благодарности: 9

Профиль | Отправить PM | Цитировать


Всем привет! Есть код:

Код: Выделить весь код
procedure RtlMoveMemory(Dest: string; Source: PAnsiChar; Len: Integer);
external 'RtlMoveMemory@kernel32.dll stdcall';

function LoadStringFromUTF16LEFile(FileName: string; var S: string): Boolean;
var
  A: AnsiString;
begin
  Result := LoadStringFromFile(FileName, A);
  if Result then
  begin
    SetLength(S, Length(A) div 2);
    RtlMoveMemory(S, A, Length(S) * 2);
    { Trim BOM, if any }
    if (Length(S) >= 1) and (Ord(S[1]) = $FEFF) then
      Delete(S, 1, 1);
  end;
end;
Помогите переделать данную функцию для загрузки UTF-8 файла.

Сама задача решаема через перекодировки в скрипте ConvertString.iss, но в этом примере кода поменьше.

// еще одна задача
необходимо запустить юникодный батник через функцию Exec или ShellExec (или через api), чтобы внутренние команды выполнились, например, bat-ник с содержимым:

copy "c:\嗨 русский.txt" "c:\嗨 русский.txt.bak"

в самой Windows, если вставить данную строку в cmd, то, пусть она и не отобразит правильно имена файлов в окне (что не требуется), но зато выполнит операцию корректно с названиями файлов в Unicode кодировке.

как добиться этого в Inno, чтобы можно было выполнять юникодные батники?
(просьба при возможности сделать пример для стандартной версии IS)

Последний раз редактировалось usermode, 16-06-2018 в 11:31.


Отправлено: 14:40, 15-06-2018 | #48