Linus писал(а):tema писал(а):Значит Output
ну так все равно пусто
Почему ты упорно имя файла в кавычках передаёшь? Ни в одном моём примере нет двойных кавычек... А у меня все программы, которые я тут в коде пишу работают.
Проверил
- Код: Выделить всё
proc.Executable:='mediainfo';
proc.Parameters.Add('--Inform="General;%Duration%"');
proc.Parameters.Add(fName);
proc.Options:=[poWaitOnExit, poUsePipes, poNoConsole];
proc.Execute;
Действительно выводится куча информации, вместо одного числа. Видимо, дело в двойных кавычках или в знаке ; или в знаке %. Что-то из этого.
Единственный способ это обойти - сделать так:
Создаёшь файл в каталоге программы. Называешь его mi.sh
- Код: Выделить всё
#!/bin/sh
mediainfo --Inform="General;%Duration%" $1
И в программе вызываешь так:
- Код: Выделить всё
AProcess := TProcess.Create(nil);
AProcess.Executable := 'sh';
AProcess.Parameters.Add('mi.sh');
AProcess.Parameters.Add(fname);
AProcess.Options := AProcess.Options + [poWaitOnExit, poUsePipes, poStderrToOutPut];
AProcess.Execute;
memo1.Lines.LoadFromStream(AProcess.Output);
AProcess.Free;
Обрати внимание, что имя файла без кавычек и на параметр
poStderrToOutPut