Всем привет!
(UBUNTU 11.04)
Вот такой вопрос у меня есть - Можно ли программно запустить на выполнение скрипт, типа того что мы пишем в консоли, и чтобы программа узнала, когда скрипт закончил свою работу?
Модератор: Модераторы
Padre_Mortius писал(а):изучайте вопрос по TProcess
Padre_Mortius писал(а):изучайте вопрос по TProcess
cd /media/Файлы/Lazarus/Проекты/
upx --best Main
AProcess.CommandLine := QuotedStr('upx --best Main /media/Файлы/Lazarus/Проекты/');
var
AProcess: TProcess;
begin
AProcess := TProcess.Create(nil);
AProcess.CommandLine := 'upx --best /media/Файлы/Lazarus/Проекты/Main';
AProcess.Options := AProcess.Options + [poWaitOnExit];
AProcess.Execute;
AProcess.Free;
end;
Padre_Mortius писал(а):
- Код: Выделить всё
var
AProcess: TProcess;
begin
AProcess := TProcess.Create(nil);
AProcess.CommandLine := 'upx --best /media/Файлы/Lazarus/Проекты/Main';
AProcess.Options := AProcess.Options + [poWaitOnExit];
AProcess.Execute;
AProcess.Free;
end;
alex208210 писал(а):uses unix;
- Код: Выделить всё
if fileexists('/media/Файлы/Lazarus/Проекты/main')=true then
begin
shell('bash -c "upx --best /media/Файлы/Lazarus/Проекты/main"');
showmessage('Бинарник упакован');
end;
_main.pas(48,11) Error: Identifier not found "shell"
ffmpeg -i input.mpg \
-vcodec h263 -s qcif -r 15 -b 100k \
-acodec libfaac -ac 1 -ar 32000 -ab 64k \
output.3gp
Здесь появляется ошибка:
Код: Выделить всё
_main.pas(48,11) Error: Identifier not found "shell"
alex208210 писал(а):uses unix; не спроста там написан..
function Tform1.shellv(commd:string):ansistring;
var
S : TProcess;
Buf: ansistring;
Count : longint;
begin
S:=TProcess.Create(Nil);
S.Commandline:=commd;
S.Options:=[poUsePipes,poNoConsole];
S.execute;
SetLength(buf, 1000);
Repeat
Count:=s.output.read(buf[1], length(buf));
result:=result + Copy(buf, 1, Count-1);
until Count=0;
S.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
memo1.lines.add(shellv('bash -c "upx --best /media/Файлы/Lazarus/Проекты/main"'));
end;
alex208210 писал(а):uses unix;
if fileexists('/media/Файлы/Lazarus/Проекты/main')=true then
begin
shell('bash -c "upx --best /media/Файлы/Lazarus/Проекты/main"');
showmessage('Бинарник упакован');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if fileexists('/media/Файлы/Lazarus/Проекты/Запуск консоли/Main1')=true then
begin
shell('bash -c "upx --best Main1 /media/Файлы/Lazarus/Проекты/Запуск консоли"');
showmessage('Бинарник упакован');
end;
end;
shellv('bash -c "echo ''#!/bin/bash'' > /scr.sh"');
shellv('bash -c "echo ''ffmpeg -i input.mpg \'' >> /scr.sh"');
shellv('bash -c "echo ''-vcodec h263 -s qcif -r 15 -b 100k \'' >> /scr.sh"');
shellv('bash -c "echo ''-acodec libfaac -ac 1 -ar 32000 -ab 64k \'' >> /scr.sh"');
shellv('bash -c "echo ''output.3gp'' >> /scr.sh"');
shellv('bash -c "chmod +xxx /scr.sh"');
shellv('xterm /scr.sh');
alexsa писал(а):
- Код: Выделить всё
var
AProcess: TProcess;
begin
AProcess := TProcess.Create(nil);
AProcess.CommandLine := 'upx --best /media/Файлы/Lazarus/Проекты/Main';
AProcess.Options := AProcess.Options + [poWaitOnExit];
AProcess.Execute;
AProcess.Free;
end;
var
AProcess: TProcess;
begin
AProcess := TProcess.Create(nil);
AProcess.CommandLine := 'bash -c "upx --best Main /media/Файлы/Lazarus/Проекты"';
AProcess.Options := AProcess.Options + [poWaitOnExit];
AProcess.Execute;
AProcess.Free;
end;
upx --best Main1 /media/Файлы/Lazarus/Проекты/Запуск консоли
IOException: not a regular file -- skipped
Padre_Mortius писал(а):если у вас работает эта команда, то Убунта странная система
- Код: Выделить всё
upx --best Main1 /media/Файлы/Lazarus/Проекты/Запуск консоли
на федоре результатом выполнения данной команды является ошибка
- Код: Выделить всё
IOException: not a regular file -- skipped
upx --best Main1
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 37