| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Как принять сообщение WinRAR c StdErr |
| Автор: kucik 12.5.2005, 01:00 | ||
| В RAR'e есть такой ключик -ierr - перенаправление всех сообщений на стандартное устройство ошибки. Как принять все эти сообщения? Прочитал эту тему http://forum.vingrad.ru/index.php?showtopic=25023&unread=1&hl=stderr, но моя проблемма немного в другом (на мой взгляд), т.к. в моём случае информация уже выводится на стандартное устройство ошибки!? Попробовал такой вариант:
... он не проходит, BytesRead всегда 0 Thanks! |
| Автор: Alex 12.5.2005, 07:07 | ||
Не проверял, но должно работать:
|
| Автор: andrey_pst 12.5.2005, 07:42 | ||
|
| Автор: kucik 14.5.2005, 02:33 |
| Уважаемый Alex, я же написал что читал данную Тобой ссылку (Тему .. и даже её привёл!!) ... и там приведённый тобой код есть, только вот незадача - он не работает тозе! 2 andrey_pst: С кодом возврата всё понятно! ... Непонятно как прочитать всё что WinRAR выводит в консоль ... а выводить он это может на стандартное устройство ошибки ... следовательно оттудова нам надо это и прочитать!!! => Если StartInfo: TStartupInfo; то, по идее StartInfo.hStdError - и есть искомое стандартное устройство ошибки .. но не тут то было! В Result := ReadFile(StartInfo.hStdError, Buffer, 255, BytesRead, nil); пусто!!! и BytesRead = 0, т.е. ничего не прочитанно хотя Buffer: array[0..255] of Char; если его посмотреть, то он что-то содержит .. (но так как это массив, причём нигде не "обнуляемый", то он просто может содержать всякую чушь!!) Помогите плиззз!!! |
| Автор: Alix 14.5.2005, 07:11 |
| Может я не прав и мое представление о мире устарело, но вроде все что выводиться в stderr выводиться только на экран и никуда более... И поток этот перенаправлять нельзя... К примеру, если вы запустите что-то так: smth.exe > t.txt, то все запишется в файл t.txt. Но! Если это прога выводит что-то в stderr, то оно в t.txt не попадет, но с гарантией попадет на экран. Или я не прав? |