Запуск внешних программ
Модератор: Модераторы
-
Sergey_Afanasyev
- новенький
- Сообщения: 49
- Зарегистрирован: 22.02.2012 19:30:27
Запуск внешних программ
Требуется запустить внешнюю программу для Windows из Lazarus, которая работает в Ububntu. При работе в Windows использовалось
ShellExecute. При переходе на Ububntu попробовал
SysUtils.ExecuteProcess, но дает ошибку 127 при выполнении.
Как из Lazarus запустить сначала Wine, а потом ему передать для
выполнения эту программу
ShellExecute. При переходе на Ububntu попробовал
SysUtils.ExecuteProcess, но дает ошибку 127 при выполнении.
Как из Lazarus запустить сначала Wine, а потом ему передать для
выполнения эту программу
wine windos_program_name.exe передать в командную строку для вызова.
-
Sergey_Afanasyev
- новенький
- Сообщения: 49
- Зарегистрирован: 22.02.2012 19:30:27
Наверное надо wine где-то объявить т.к. дает сообщение, что неизвестный идентификатор wine.
Скорее, указать полный путь к бинарнику.. /usr/bin/wine
-
Sergey_Afanasyev
- новенький
- Сообщения: 49
- Зарегистрирован: 22.02.2012 19:30:27
В программе написано так:
SysUtils.ExecuteProcess('usr/bin/wine',
['/home/sergey/KadriStud/reportf.exe']);
При запуске дает:
Failed to execute "ucr/bin/wine" error code: 127.
SysUtils.ExecuteProcess('usr/bin/wine',
['/home/sergey/KadriStud/reportf.exe']);
При запуске дает:
Failed to execute "ucr/bin/wine" error code: 127.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Что и следовало ожидать.
UPD:
ошибка 127 это "command not found" -- у вас просто испорчены параметры запуска программ
Добавлено спустя 23 минуты:
а не "./usr/bin/wine" ? А то получается вроде бы путь от текущего местоположения, а не от корня.
UPD:
ошибка 127 это "command not found" -- у вас просто испорчены параметры запуска программ
Добавлено спустя 23 минуты:
PapaNT писал(а):Скорее, указать полный путь к бинарнику.. /usr/bin/wine
а не "./usr/bin/wine" ? А то получается вроде бы путь от текущего местоположения, а не от корня.
-
Sergey_Afanasyev
- новенький
- Сообщения: 49
- Зарегистрирован: 22.02.2012 19:30:27
"./usr/bin/wine" ничего не изменил. Снова дает ошибку 127.
В домашней папке есть папка sergey , а там папка KadriStud. В папке KadriStud находится программа reportf.exe. Что нужно написать, чтобы вызвать её через wine?
В домашней папке есть папка sergey , а там папка KadriStud. В папке KadriStud находится программа reportf.exe. Что нужно написать, чтобы вызвать её через wine?
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Sergey_Afanasyev, а вы только wine с полным путем запускаете? Вы понимаете, что по умолчанию путь идет от текущей папки, которая может не совпадать с домашней? И, скорее всего, равна пути из которого была запущена программа.
-
Sergey_Afanasyev
- новенький
- Сообщения: 49
- Зарегистрирован: 22.02.2012 19:30:27
В программе на Lazarus написано
SysUtils.ExecuteProcess('usr/bin/wine',
['/home/sergey/KadriStud/reportf.exe']);
То, что содержится в квадратных скобках '/home/sergey/KadriStud/reportf.exe' и есть полный путь к программе reportf.exe.
SysUtils.ExecuteProcess('usr/bin/wine',
['/home/sergey/KadriStud/reportf.exe']);
То, что содержится в квадратных скобках '/home/sergey/KadriStud/reportf.exe' и есть полный путь к программе reportf.exe.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Sergey_Afanasyev, насколько я помню правила составления путей, у вас полный путь к файлу reportf.exe должен быть примерно такой:
Это при условии, что активным является корень вашего профиля. Если же активной папкой является папка с программой, то начало заменяется на путь до программы.
Относительный путь (с активного каталога) начинается со слеша, а абсолютный (полный) с символов точка слеш.
Код: Выделить всё
./home/sergey/home/sergey/KadriStud/reportf.exe
Это при условии, что активным является корень вашего профиля. Если же активной папкой является папка с программой, то начало заменяется на путь до программы.
Относительный путь (с активного каталога) начинается со слеша, а абсолютный (полный) с символов точка слеш.
Лекс Айрин писал(а):Относительный путь (с активного каталога) начинается со слеша, а абсолютный (полный) с символов точка слеш.
с точностью до наоборот.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
SSerge, мда... вот что значит давно не сидеть в консоли(((
получается, в пути до wine у Sergey_Afanasyevа пропущен начальный слеш?
получается, в пути до wine у Sergey_Afanasyevа пропущен начальный слеш?
-
Sergey_Afanasyev
- новенький
- Сообщения: 49
- Зарегистрирован: 22.02.2012 19:30:27
Я установил Q4Wine, хотя это может и не имеет значения и перепробовал все варианты со слешами и точками. Заработал вариант
SysUtils.ExecuteProcess('usr/bin/wine',['/home/sergey/KadriStud/reportf.exe']);
Большое спасибо всем.
SysUtils.ExecuteProcess('usr/bin/wine',['/home/sergey/KadriStud/reportf.exe']);
Большое спасибо всем.
Хм...
Надо было запустить дельфина в дебиане. Сорцы мсе но, мне кажется, TProcess из лазаря вам поможет.
п.с.
локаль подключал из-за необходимости. Вине багнулось и кирилицу не читало.
Надо было запустить дельфина в дебиане. Сорцы мсе но, мне кажется, TProcess из лазаря вам поможет.
п.с.
локаль подключал из-за необходимости. Вине багнулось и кирилицу не читало.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Лекс Айрин писал(а):Что и следовало ожидать.
UPD:
ошибка 127 это "command not found" -- у вас просто испорчены параметры запуска программ
Добавлено спустя 23 минуты:PapaNT писал(а):Скорее, указать полный путь к бинарнику.. /usr/bin/wine
а не "./usr/bin/wine" ? А то получается вроде бы путь от текущего местоположения, а не от корня.
Было задумано многоточие с пробелом перед слешом с корого начинается полное имя бинарного объекта.
