Название: QProcess и waitForReadyRead для получения результатов из консольного приложения Отправлено: IGHOR от Апрель 11, 2010, 03:35 Использую QProcess для запуска внешнего приложения Rar.exe и через readAllStandardOutput() получаю % текущей операции и вывожу его в QProgressBar.
В общем код запуска приложения: Код: QProcess proc; По запуске приложения rar.exe получаю переодически вывод и достаю % как и должжно быть. Я решил попробовать то же проделать с 7-zip для сжатия файлов. Достал консольную версию 7za.exe но в итоге waitForReadyRead() возвращает значения консоли только по завершении архивирования, при обращении к proc.readAllStandardOutput() с помощью таймера по средине операции функция возвращает пустой результат. Как прочитать вывод через QProcess чтобы всюду работало? Чем же могут отличятся консольные выводы этих программ? Может еще что-то надо задать в QProcess? Название: Re: QProcess и waitForReadyRead для получения результатов из консольного приложения Отправлено: lit-uriy от Апрель 11, 2010, 05:27 >>Чем же могут отличятся консольные выводы этих программ?
ну а ты его запусти в консоли и глазами посмотри, что он выводит. Название: Re: QProcess и waitForReadyRead для получения результатов из консольного приложения Отправлено: Пантер от Апрель 11, 2010, 10:42 У 7z проценты не через StandardOutput передаются, на сколько я знаю.
Название: Re: QProcess и waitForReadyRead для получения результатов из консольного приложения Отправлено: IGHOR от Апрель 11, 2010, 18:45 У 7z проценты не через StandardOutput передаются, на сколько я знаю. Если так то как его прочитать через Qt?lit-uriy, я не о текстовом формате вывода, а о том что нет сигнала при изменении текста (процентов) в 7z а в Rar.exe все как надо Название: Re: QProcess и waitForReadyRead для получения результатов из консольного приложения Отправлено: IGHOR от Апрель 11, 2010, 19:19 Если в консоли выполнить: "Rar.exe a QtCore4.rar QtCore4.dll > rar.txt"
то содержание rar.txt будет где-то таким: Код: RAR 3.93 Copyright (c) 1993-2010 Alexander Roshal 15 Mar 2010 После выполнения: "7za.exe a QtCore4.7z QtCore4.dll > 7z.txt" вывод в 7z.txt такой: Код: 7-Zip (A) 4.65 Copyright (c) 1999-2009 Igor Pavlov 2009-02-03 В 7z выводе нет никаких процентов но если смотреть в консоли то они выводятся, как средствами Qt читать такой вывод? Название: Re: QProcess и waitForReadyRead для получения результатов из консольного приложения Отправлено: Пантер от Апрель 11, 2010, 21:47 Никак. Они, походу, рисуются на экране. Сам в свое время с этим столкнулся, решения не нашел. Это, скорее, минус 7zip'а.
Название: Re: QProcess и waitForReadyRead для получения результатов из консольного приложения Отправлено: IGHOR от Апрель 11, 2010, 22:55 Пантер, спасибо, видимо смирюсь с этим и время больше тратить не буду
Название: Re: QProcess и waitForReadyRead для получения результатов из консольного приложения Отправлено: Пантер от Апрель 11, 2010, 23:07 Можешь автору фичреквест отправить.
Название: Re: QProcess и waitForReadyRead для получения результатов из консольного приложения Отправлено: IGHOR от Апрель 12, 2010, 00:06 Пантер, так и сделал: https://sourceforge.net/tracker/?func=detail&atid=364481&aid=2985588&group_id=14481
Название: Re: QProcess и waitForReadyRead для получения результатов из консо Отправлено: kataklysm от Сентябрь 27, 2010, 08:25 Пантер, так и сделал: https://sourceforge.net/tracker/?func=detail&atid=364481&aid=2985588&group_id=14481 Тоже интересует статус процесса выполнения. Решилось ли как нибудь?Прочитал Tracker.... Хотя 7z at выдает, то что надо. Или хотя бы узнавать общее количество файлов. Как можно получить данные числа? |