Проблема с кодировкой фолдера на Windows.

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Проблема с кодировкой фолдера на Windows.

Сообщение Sergey1979 » 30.01.2024 11:21:22

Привет!
Написал программу для запуска Java. Использовал Free Pascal 3.2.2 и Windows 11.
Код: Выделить всё
program project1;
uses
  ShellApi, SysUtils;
var
  JRE_Folder, JAR_Folder: String;
{$R *.res}
begin
  JRE_Folder := GetCurrentDir + '\JRE\bin\javaw.exe';
  JAR_Folder := GetCurrentDir + '\JavaProgram.jar';
  ShellExecute(0, 'open', PChar(JRE_Folder), PChar('-jar "' + JAR_Folder + '"'), nil, 1);
end.

Работает исправно, только если фолдер запуска на английском, если переименовать на русский или др. язык, то ничего не запускает. Наверно, неправильно определяет текущий фолдер GetCurrentDir.
Прбовал
Код: Выделить всё
{$codepage UTF8}
также пробовал
Код: Выделить всё
PWideChar(UTF8Decode(GetCurrentDir))
не помогло.
Как временное решение, запретил пользователю переименовывать фолдер запуска.
Пожалуйста, подскажите, что можно сделать?
Sergey1979
незнакомец
 
Сообщения: 4
Зарегистрирован: 13.05.2022 08:44:41

Re: Проблема с кодировкой фолдера на Windows.

Сообщение xchgeaxeax » 30.01.2024 12:32:37

Используйте WideString, а не UTF8String. И PWideChar(UTF8Decode(GetCurrentDir)) работать не будет т.к. PWideChar не приводится к UTF8String без преобразования.
WideString это UTF16-LE, а не UTF8. Для работы с UTF16-LE в Windows давно есть функции с суффиксом W, а вот UTF8 она осваивать только начала и то не без проблем.
xchgeaxeax
новенький
 
Сообщения: 90
Зарегистрирован: 11.05.2023 03:51:40

Re: Проблема с кодировкой фолдера на Windows.

Сообщение Sergey1979 » 30.01.2024 15:24:12

Спасибо!
Перешел на ShellExecuteW и использую WideString.
Заработало.
Sergey1979
незнакомец
 
Сообщения: 4
Зарегистрирован: 13.05.2022 08:44:41


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 47

Рейтинг@Mail.ru