Цитата Сообщение от ВладОвен Посмотреть сообщение
Подскажите, а как с помощью библиотеки CmpSysExec передавать в Linux команды, в которых содержится кириллица?
Возможно ли для этого использовать CmpSysExec.sysExecute5?
Как-то так
У всех sysExecute принцип одинаковый. Нужна UTF8
Вот мой живой пример:

Код:
//Внутренние параметры
VAR
	
	//Имя БД в UTF8
	sBD_Name_UTF8: STRING(255);
	
	//Имя файла в UTF8
	sFileName_UTF8: STRING(255);
	
	//ФБ для отправки команд на контроллерную консоль
	fbSe4: CmpSysExec.SysExecute4;
END_VAR
Код:
//Константы
VAR CONSTANT
	//Команда отправки на контроллерную консоль
	sCommand: STRING(255) := 'bsqldb -S read -q -t $';$' -U sa -P mypassword -D #BD_NAME# -i #FILE_NAME#';
END_VAR
Код:
	//Имя БД в правильной кодировке UTF8
	STU.ConvertUTF16toUTF8(ADR(sBD_Name), ADR(sBD_Name_UTF8), SIZEOF(sBD_Name_UTF8), FALSE);
	sCommand_Real := OSU.ReplaceSubstring(sCommand, '#BD_NAME#', sBD_Name_UTF8);
	
	//Имя файла в правильной кодировке UTF8
	STU.ConvertUTF16toUTF8(ADR(sFileName), ADR(sFileName_UTF8), SIZEOF(sFileName_UTF8), FALSE);
	sCommand_Real := OSU.ReplaceSubstring(sCommand_Real, '#FILE_NAME#', sFileName_UTF8);
Код:
//Блок отправки команды через контроллерную консоль
fbSe4
(
	xExecute   := fbRiseEdge.Q,  //Запуск на исполнение по переднему фронту
	sCommand   := sCommand_Real, //Команда Linux - например 'ls /'
	xAbort     := FALSE,         //Аварийный останов процесса
	sOutput    => ResultString,  //Массив строк для сохранения вывода процесса
	cntReadStr => CountOfStrings,//Количество считанных строк вывода процесса
	xOverFlow  => ,              //Признак переполнения массива sOutput
	xDone      => xDone,         //Признак завершённости процесса и/или того, что в данный момент не выполняется процесс Linux
	xAborted   => ,              //Признак прерывания по пользовательской команде
	xError     => xError,        //Признак невозможности запуска из-за возникновекния ошибки
	xBusy      => xBusy,         //Процесс выполняется
	eErrorCode =>                //Код ошибки
);