Ребята, опять прошу вашей помощи. Как через консоль выполнить поочередно пакет команд? Сами команды формируются через formatStr. Я пробовал связку перебор массива и поток, но так это не работвет. После чего пришла идея формировать список команд, сохранять их в BAT файле, после чего выполнять- это работает, но все же хочется, чтобы команды выполнялись поочередно из самой программы, а не через BAT. И было бы круто выводить панель прогресса)
* Команды для работы с ffmpeg и winrar
Редактировалось 4 раз(а), последний 2020-06-24 13:56:19
Этот топик читают: Гость
Ответов: 107
Рейтинг: 0
|
|||
карма: 0 |
|
Ответов: 4628
Рейтинг: 749
|
|||
Перебор массива с компонентом WinExec должен работать. В WinExec.FileName указывается постоянное имя исполняемого файла, а на верхнюю точку WinExec.Params подается то, что получается при переборе. Поставить WinExec.RunEvent=Wait, чтобы дожидаться завершения каждой команды (иначе будет одновременно запускаться множество процессов).
Редактировалось 1 раз(а), последний 2020-06-24 13:28:59 |
|||
карма: 26 |
|
Ответов: 107
Рейтинг: 0
|
|||
Netspirit писал(а): Перебор массива с компонентом WinExec должен работать. В WinExec.FileName указывается постоянное имя исполняемого файла, а на верхнюю точку WinExec.Params подается то, что получается при переборе. Поставить WinExec.RunEvent=Wait, чтобы дожидаться завершения каждой команды (иначе будет одновременно запускаться множество процессов).
Редактировалось 1 раз(а), последний 2020-06-24 13:28:59 Спасибо работает, но есть одно НО, при генерации скриншотов через ffmpeg обрабатывает не все файлы, только первые 15-25 файлов из 160, хотя эти же команды через BAT обрабатывают все файлы |
|||
карма: 0 |
|
Ответов: 4628
Рейтинг: 749
|
|||
Возможно в схеме у тебя что-то не так. Например, имена, содержащие пробелы, должны указываться в кавычках.
Редактировалось 1 раз(а), последний 2020-06-24 15:04:40 |
|||
карма: 26 |
|
Ответов: 107
Рейтинг: 0
|
|||
Пробовал без кавычек с кавычками, пути только латиницей - один черт делает первые пару штук и встает
|
|||
карма: 0 |
|
Ответов: 4628
Рейтинг: 749
|
|||
1) Компонента SymbolsGen у нас нет
2) При запуске консольных программ нет необходимости запускать сначала cmd.exe, а затем передавать ему команду на запуск другой программы. 3) При запуске программы следует дожидаться её завершения перед тем как запускать следующую. doConsoleExec следует использовать тогда, когда есть необходимость подавать команды и получать результаты через стандартные потоки ввода-вывода (doConsoleInput, onConsoleResult, onConsoleError). При этом есть некоторые сложности с приостановкой запускающего потока в ожидании завершения консольной программы. В остальных случаях использовать doExec при RunEvent=Wait. Вот твоя работающая схема, демонстрирующая оба варианта запуска:
nesco, есть предложение поправить WinExec - сделать чтобы свойство RunEvent также работало и для метода doConsoleExec. То-есть, по doConsoleExec при RunEvent=Wait метод приостанавливается до завершения работы консольной программы. Это позволит избежать того огорода из Events+WaitObject в моей схеме (а Events - надо переработать!). Редактировалось 1 раз(а), последний 2020-06-29 15:28:35 |
|||
карма: 26 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Давай законченный вариант, добавлю на SVN.
|
|||
карма: 22 |
|
Ответов: 4628
Рейтинг: 749
|
|||
Вот. В архиве также обновленный Events (если посчитаешь нужным).
|
|||
карма: 26 |
| ||
Голосовали: | Konst |
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Netspirit писал(а): ВотА на SVN что я буду писать? Мы же договаривались, что все изменения для добавления на SVN снабжаются комментами. |
|||
карма: 22 |
|
Ответов: 4628
Рейтинг: 749
|
|||
WinExec - property RunEvent work also for doConsoleExec
|
|||
карма: 26 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
А на Events?
|
|||
карма: 22 |
|
Ответов: 4628
Рейтинг: 749
|
|||
Events - removed points doCreate, doDestroy, onCreate
|
|||
карма: 26 |
|
Ответов: 107
Рейтинг: 0
|
|||
Netspirit, Спасибо тебе! Ты просто волшебник!
|
|||
карма: 0 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Netspirit писал(а): removed points doCreate, doDestroy, onCreateЭто что, событие всегда будет создаваться по дефолту при запуске, а не так как раньше, когда надо? А в чем сакральный смысл сего решения? Редактировалось 1 раз(а), последний 2020-06-30 12:19:58 |
|||
карма: 22 |
|
Ответов: 4628
Рейтинг: 749
|
|||
Смысл - не тянуть постоянно связь к точке doCreate. Так как раз компонент вставлен схему, значит будет использоваться - а какая разница в какой момент инициализировать объект?
В коде можно, конечно, сделать чтобы объект создавался при первом обращении к нижней точке. Редактировалось 1 раз(а), последний 2020-07-01 14:40:59 |
|||
карма: 26 |
|