Запуск внешних программ

Вопросы программирования и использования среды Lazarus.

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

Запуск внешних программ

Сообщение Sergey_Afanasyev » 20.10.2015 10:30:15

Требуется запустить внешнюю программу для Windows из Lazarus, которая работает в Ububntu. При работе в Windows использовалось
ShellExecute. При переходе на Ububntu попробовал
SysUtils.ExecuteProcess, но дает ошибку 127 при выполнении.
Как из Lazarus запустить сначала Wine, а потом ему передать для
выполнения эту программу
Sergey_Afanasyev
новенький
 
Сообщения: 49
Зарегистрирован: 22.02.2012 19:30:27

Re: Запуск внешних программ

Сообщение PapaNT » 20.10.2015 11:52:13

wine windos_program_name.exe передать в командную строку для вызова.
PapaNT
постоялец
 
Сообщения: 167
Зарегистрирован: 11.09.2009 12:06:46
Откуда: Москва

Re: Запуск внешних программ

Сообщение Sergey_Afanasyev » 20.10.2015 12:22:55

Наверное надо wine где-то объявить т.к. дает сообщение, что неизвестный идентификатор wine.
Sergey_Afanasyev
новенький
 
Сообщения: 49
Зарегистрирован: 22.02.2012 19:30:27

Re: Запуск внешних программ

Сообщение PapaNT » 20.10.2015 13:21:45

Скорее, указать полный путь к бинарнику.. /usr/bin/wine
PapaNT
постоялец
 
Сообщения: 167
Зарегистрирован: 11.09.2009 12:06:46
Откуда: Москва

Re: Запуск внешних программ

Сообщение Sergey_Afanasyev » 20.10.2015 14:35:09

В программе написано так:
SysUtils.ExecuteProcess('usr/bin/wine',
['/home/sergey/KadriStud/reportf.exe']);
При запуске дает:
Failed to execute "ucr/bin/wine" error code: 127.
Sergey_Afanasyev
новенький
 
Сообщения: 49
Зарегистрирован: 22.02.2012 19:30:27

Re: Запуск внешних программ

Сообщение Лекс Айрин » 20.10.2015 14:53:53

Что и следовало ожидать.

UPD:
ошибка 127 это "command not found" -- у вас просто испорчены параметры запуска программ

Добавлено спустя 23 минуты:
PapaNT писал(а):Скорее, указать полный путь к бинарнику.. /usr/bin/wine



а не "./usr/bin/wine" ? А то получается вроде бы путь от текущего местоположения, а не от корня.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Запуск внешних программ

Сообщение Sergey_Afanasyev » 20.10.2015 16:38:05

"./usr/bin/wine" ничего не изменил. Снова дает ошибку 127.
В домашней папке есть папка sergey , а там папка KadriStud. В папке KadriStud находится программа reportf.exe. Что нужно написать, чтобы вызвать её через wine?
Sergey_Afanasyev
новенький
 
Сообщения: 49
Зарегистрирован: 22.02.2012 19:30:27

Re: Запуск внешних программ

Сообщение Лекс Айрин » 20.10.2015 17:49:27

Sergey_Afanasyev, а вы только wine с полным путем запускаете? Вы понимаете, что по умолчанию путь идет от текущей папки, которая может не совпадать с домашней? И, скорее всего, равна пути из которого была запущена программа.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Запуск внешних программ

Сообщение Sergey_Afanasyev » 20.10.2015 18:33:11

В программе на Lazarus написано
SysUtils.ExecuteProcess('usr/bin/wine',
['/home/sergey/KadriStud/reportf.exe']);
То, что содержится в квадратных скобках '/home/sergey/KadriStud/reportf.exe' и есть полный путь к программе reportf.exe.
Sergey_Afanasyev
новенький
 
Сообщения: 49
Зарегистрирован: 22.02.2012 19:30:27

Re: Запуск внешних программ

Сообщение Лекс Айрин » 20.10.2015 18:51:47

Sergey_Afanasyev, насколько я помню правила составления путей, у вас полный путь к файлу reportf.exe должен быть примерно такой:
Код: Выделить всё
./home/sergey/home/sergey/KadriStud/reportf.exe

Это при условии, что активным является корень вашего профиля. Если же активной папкой является папка с программой, то начало заменяется на путь до программы.

Относительный путь (с активного каталога) начинается со слеша, а абсолютный (полный) с символов точка слеш.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Запуск внешних программ

Сообщение SSerge » 20.10.2015 19:22:22

Лекс Айрин писал(а):Относительный путь (с активного каталога) начинается со слеша, а абсолютный (полный) с символов точка слеш.

с точностью до наоборот.
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Запуск внешних программ

Сообщение Лекс Айрин » 20.10.2015 19:34:48

SSerge, мда... вот что значит давно не сидеть в консоли(((

получается, в пути до wine у Sergey_Afanasyevа пропущен начальный слеш?
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Запуск внешних программ

Сообщение Sergey_Afanasyev » 20.10.2015 21:07:47

Я установил Q4Wine, хотя это может и не имеет значения и перепробовал все варианты со слешами и точками. Заработал вариант
SysUtils.ExecuteProcess('usr/bin/wine',['/home/sergey/KadriStud/reportf.exe']);
Большое спасибо всем.
Sergey_Afanasyev
новенький
 
Сообщения: 49
Зарегистрирован: 22.02.2012 19:30:27

Re: Запуск внешних программ

Сообщение pupsik » 20.10.2015 23:20:40

Хм...
Надо было запустить дельфина в дебиане. Сорцы мсе но, мне кажется, TProcess из лазаря вам поможет.

п.с.
локаль подключал из-за необходимости. Вине багнулось и кирилицу не читало.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Запуск внешних программ

Сообщение PapaNT » 21.10.2015 16:42:48

Лекс Айрин писал(а):Что и следовало ожидать.

UPD:
ошибка 127 это "command not found" -- у вас просто испорчены параметры запуска программ

Добавлено спустя 23 минуты:
PapaNT писал(а):Скорее, указать полный путь к бинарнику.. /usr/bin/wine



а не "./usr/bin/wine" ? А то получается вроде бы путь от текущего местоположения, а не от корня.

Было задумано многоточие с пробелом перед слешом с корого начинается полное имя бинарного объекта.
PapaNT
постоялец
 
Сообщения: 167
Зарегистрирован: 11.09.2009 12:06:46
Откуда: Москва

След.

Вернуться в Lazarus

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

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

Рейтинг@Mail.ru