Lazarus и запуск внешних приложений

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

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

Lazarus и запуск внешних приложений

Сообщение SuSe user » 23.10.2011 21:31:48

Можно ли заставить лазарус выполнять команды линукс? Например: wget -b
SuSe user
новенький
 
Сообщения: 13
Зарегистрирован: 02.10.2011 21:03:08

Re: Компоненты и примеры

Сообщение Odyssey » 24.10.2011 00:15:50

Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: Компоненты и примеры

Сообщение SuSe user » 25.10.2011 21:10:59

Odyssey писал(а):http://www.freepascal.org/docs-html/rtl/unix/fpsystem.html

Всё легче чем я думал. Сейчас хочу создать форму, которая будет выполнять эти команды. По идее, хочу (для начала) что бы пользователь в Edit вписывал команду с ключом, а по нажатию кнопки команда выполнялась. Сперва я сделал так:
Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
var
  FpS :Longint;
  key :string
begin
  key:= ('Edit1.Text');
  FpS:= FpSystem ('xterm'+ key);
end; 

но ничего не произошло. Затем:
Код: Выделить всё
begin
  FpS:= FpSystem ('xterm');
  key:= ('Edit1.Text');
  FpS:= FpSystem ('xterm'+ key);
end;

в этом случае консоль вызывается но, окно программы становится не активным до тех пор, пока консоль не будет закрыта.
Как реализовывается возможно дописывания ключей из оболочки программы?
SuSe user
новенький
 
Сообщения: 13
Зарегистрирован: 02.10.2011 21:03:08

Re: Компоненты и примеры

Сообщение dunin » 26.10.2011 01:20:06

SuSe user писал(а): key:= ('Edit1.Text');

Кавычки тут на кой ляд? :?
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и

Re: Компоненты и примеры

Сообщение Odyssey » 26.10.2011 08:29:30

SuSe user писал(а):в этом случае консоль вызывается но, окно программы становится не активным до тех пор, пока консоль не будет закрыта.

Чтобы это преодолеть, можно воспользоваться TProcess, выключив опцию poWaitOnExit.
dunin писал(а): > key:= ('Edit1.Text');
Кавычки тут на кой ляд? :?

Да и от скобочек тоже толку нет. Достаточно сделать
Код: Выделить всё
key:= Edit1.Text;

Разве что пробел добавить, чтобы имя программы было отделено от параметров:
Код: Выделить всё
key:= ' ' + Edit1.Text;
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: Компоненты и примеры

Сообщение SuSe user » 26.10.2011 13:20:05

Odyssey спасибо. Приду домой, проверю и отпишусь.
SuSe user
новенький
 
Сообщения: 13
Зарегистрирован: 02.10.2011 21:03:08

Re: Lazarus и запуск внешних приложений

Сообщение Padre_Mortius » 26.10.2011 22:54:20

Из темы "Компоненты и примеры" перенесено в новую, т.к. к теме топика не относится
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Lazarus и запуск внешних приложений

Сообщение leo_bsv » 01.11.2011 17:44:06

вот процедура из предыдущей версии модуля uOpenOffice.pas
Код: Выделить всё
// процедура отображения документа разработана только для linux
procedure TOoWriter.ShowDocument;
var exe_path, templ_path, sh: string;
    Proc: TProcess;
begin
  exe_path:=ExtractFilePath(Application.ExeName);

  {$IFDEF Linux}
  templ_path:=exe_path+'template/';
  GenerateDocument(templ_path,'doc','');
  try
    Proc:=TProcess.Create(nil);
    Proc.CommandLine:='ooffice -writer '+templ_path+'doc.odt';
    Proc.Options:=[poWaitOnExit];
    Proc.ShowWindow:=swoShowMaximized;
    Proc.Execute;
  finally
    //удалим временные файлы и папки
    if Proc.WaitOnExit then begin
      Proc.CommandLine:='rm '+templ_path+' -r';
      Proc.Execute;
      Proc.Free;
    end;
  end;
  {$ENDIF}
end;
Аватара пользователя
leo_bsv
постоялец
 
Сообщения: 276
Зарегистрирован: 04.08.2010 16:26:10
Откуда: Йошкар-Ола

Re: Lazarus и запуск внешних приложений

Сообщение SuSe user » 11.12.2011 13:49:48

Для своей курсовой работы написал приложение на лазарусе. Для того что бы показать большую функциональность приложения, хочу сделать так, что бы она запускалась внутри консоли.
Вопрос таков:
как приложение написанное в лазарусе на делфи выполнять в псевдографическом режиме для консоли (а-ля YaST)?
SuSe user
новенький
 
Сообщения: 13
Зарегистрирован: 02.10.2011 21:03:08

Re: Lazarus и запуск внешних приложений

Сообщение Владимир » 11.12.2011 14:58:26

SuSe user писал(а):Можно ли заставить лазарус выполнять команды линукс? Например: wget -b

Дедовский способ через libc
Код: Выделить всё
uses ...libc
.........
function run:Boolean;
var
p:Pchar;
s:String;
begin
s:='/home/...'; //здесь путь запуска
p:=Pchar(s);
libc.System(p);
end;
Владимир
постоялец
 
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Re: Lazarus и запуск внешних приложений

Сообщение Ism » 11.12.2011 16:21:59

libc вроде как deprecated , то есть этот модуль больше не поддерживается в fpc
Или я ошибаюсь ?
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Lazarus и запуск внешних приложений

Сообщение Владимир » 11.12.2011 16:32:08

Ism писал(а):libc вроде как deprecated , то есть этот модуль больше не поддерживается в fpc

Ну, не знаю, я им пользуюсь - пока без проблем. Конечно, это криво и медленно (может даже неправильно), но в некоторых случаях (например, запуск скрипта) очень даже способствует.
Владимир
постоялец
 
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Re: Lazarus и запуск внешних приложений

Сообщение Ism » 11.12.2011 17:01:54

Вот могильная плита

http://wiki.freepascal.org/libc_unit
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Lazarus и запуск внешних приложений

Сообщение Владимир » 11.12.2011 17:40:54

Ism писал(а):Вот могильная плита

Что сказать... В Kylih это было, пожалуй, единственным средством запуска чего-нить. Посмотрим. Перестанет работать - перейдем на TProcess. Мой лозунг - работает - не трогай!
Владимир
постоялец
 
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Re: Lazarus и запуск внешних приложений

Сообщение Ism » 11.12.2011 18:03:54

Большинство функций libc перекочевали в модуль Unix с приставкой fp
fpSystem
FpFork

В моем проекте в основном они используются

Для примера

https://code.google.com/p/xroot/source/ ... t/main.pas
Последний раз редактировалось Ism 11.12.2011 18:32:36, всего редактировалось 2 раз(а).
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

След.

Вернуться в Lazarus

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

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

Рейтинг@Mail.ru
cron