Russian Qt Forum
Ноябрь 27, 2024, 08:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QProcess и waitForReadyRead для получения результатов из консольного приложения  (Прочитано 9544 раз)
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« : Апрель 11, 2010, 03:35 »

Использую QProcess для запуска внешнего приложения Rar.exe и через readAllStandardOutput() получаю % текущей операции и вывожу его в QProgressBar.
В общем код запуска приложения:

Код:
QProcess proc;
proc.start(exeParam,paramList);
while(proc.waitForReadyRead(-1))
{
int outPrecent=getPrecentFromOutput(proc.readAllStandardOutput());
...
}

По запуске приложения rar.exe получаю переодически вывод и достаю % как и должжно быть.
Я решил попробовать то же проделать с 7-zip для сжатия файлов. Достал консольную версию 7za.exe
но в итоге waitForReadyRead() возвращает значения консоли только по завершении архивирования,
при обращении к proc.readAllStandardOutput() с помощью таймера по средине операции функция возвращает пустой результат.
Как прочитать вывод через QProcess чтобы всюду работало?
Чем же могут отличятся консольные выводы этих программ?
Может еще что-то надо задать в QProcess?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Апрель 11, 2010, 05:27 »

>>Чем же могут отличятся консольные выводы этих программ?
ну а ты его запусти в консоли и глазами посмотри, что он выводит.
Записан

Юра.
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #2 : Апрель 11, 2010, 10:42 »

У 7z проценты не через StandardOutput передаются, на сколько я знаю.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« Ответ #3 : Апрель 11, 2010, 18:45 »

У 7z проценты не через StandardOutput передаются, на сколько я знаю.
Если так то как его прочитать через Qt?

lit-uriy, я не о текстовом формате вывода, а о том что нет сигнала при изменении текста (процентов) в 7z а в Rar.exe все как надо
« Последнее редактирование: Апрель 11, 2010, 19:23 от IGHOR » Записан
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« Ответ #4 : Апрель 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
Shareware version         Type RAR -? for help

Evaluation copy. Please register.

Creating archive QtCore4.rar

Adding    QtCore4.dll                                                    ||||   1%||||   25%||||   50%||||   76%||||  100%||||  OK
Done

После выполнения: "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
Scanning

Creating archive QtCore4.7z

Compressing  QtCore4.dll

Everything is Ok

В 7z выводе нет никаких процентов но если смотреть в консоли то они выводятся, как средствами Qt читать такой вывод?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Апрель 11, 2010, 21:47 »

Никак. Они, походу, рисуются на экране. Сам в свое время с этим столкнулся, решения не нашел. Это, скорее, минус 7zip'а.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« Ответ #6 : Апрель 11, 2010, 22:55 »

Пантер, спасибо, видимо смирюсь с этим и время больше тратить не буду
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #7 : Апрель 11, 2010, 23:07 »

Можешь автору фичреквест отправить.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« Ответ #8 : Апрель 12, 2010, 00:06 »

Пантер, так и сделал: https://sourceforge.net/tracker/?func=detail&atid=364481&aid=2985588&group_id=14481
Записан
kataklysm
Гость
« Ответ #9 : Сентябрь 27, 2010, 08:25 »


Тоже интересует статус процесса выполнения. Решилось ли как нибудь?Прочитал Tracker....
Хотя 7z at выдает, то что надо. Или хотя бы узнавать общее количество файлов. Как можно получить данные числа?
« Последнее редактирование: Сентябрь 27, 2010, 08:27 от kataklysm » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.124 секунд. Запросов: 23.