Lazarus и запуск внешних приложений
Модератор: Модераторы
Lazarus и запуск внешних приложений
Можно ли заставить лазарус выполнять команды линукс? Например: wget -b
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 писал(а):в этом случае консоль вызывается но, окно программы становится не активным до тех пор, пока консоль не будет закрыта.
Чтобы это преодолеть, можно воспользоваться TProcess, выключив опцию poWaitOnExit.
dunin писал(а): > key:= ('Edit1.Text');
Кавычки тут на кой ляд?
Да и от скобочек тоже толку нет. Достаточно сделать
Код: Выделить всё
key:= Edit1.Text;Разве что пробел добавить, чтобы имя программы было отделено от параметров:
Код: Выделить всё
key:= ' ' + Edit1.Text;Odyssey спасибо. Приду домой, проверю и отпишусь.
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
Из темы "Компоненты и примеры" перенесено в новую, т.к. к теме топика не относится
- leo_bsv
- постоялец
- Сообщения: 276
- Зарегистрирован: 04.08.2010 16:26:10
- Откуда: Йошкар-Ола
- Контактная информация:
вот процедура из предыдущей версии модуля 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;
Для своей курсовой работы написал приложение на лазарусе. Для того что бы показать большую функциональность приложения, хочу сделать так, что бы она запускалась внутри консоли.
Вопрос таков:
как приложение написанное в лазарусе на делфи выполнять в псевдографическом режиме для консоли (а-ля YaST)?
Вопрос таков:
как приложение написанное в лазарусе на делфи выполнять в псевдографическом режиме для консоли (а-ля YaST)?
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;
libc вроде как deprecated , то есть этот модуль больше не поддерживается в fpc
Или я ошибаюсь ?
Или я ошибаюсь ?
Ism писал(а):libc вроде как deprecated , то есть этот модуль больше не поддерживается в fpc
Ну, не знаю, я им пользуюсь - пока без проблем. Конечно, это криво и медленно (может даже неправильно), но в некоторых случаях (например, запуск скрипта) очень даже способствует.
Ism писал(а):Вот могильная плита
Что сказать... В Kylih это было, пожалуй, единственным средством запуска чего-нить. Посмотрим. Перестанет работать - перейдем на TProcess. Мой лозунг - работает - не трогай!
Большинство функций libc перекочевали в модуль Unix с приставкой fp
fpSystem
FpFork
В моем проекте в основном они используются
Для примера
https://code.google.com/p/xroot/source/ ... t/main.pas
fpSystem
FpFork
В моем проекте в основном они используются
Для примера
https://code.google.com/p/xroot/source/ ... t/main.pas
Последний раз редактировалось Ism 11.12.2011 18:32:36, всего редактировалось 2 раза.
