Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26149
Рейтинг: 2127
#16: 2018-12-28 15:40:35 ЛС | профиль | цитата
Добавил исправления, проверь, то ли я добавил

Редактировалось 1 раз(а), последний 2018-12-28 15:41:14
карма: 22

0
Ответов: 4630
Рейтинг: 749
#17: 2018-12-28 15:43:59 ЛС | профиль | цитата
То, что надо. Спасибо.
карма: 26

0
Ответов: 4630
Рейтинг: 749
#18: 2019-01-11 18:24:44 ЛС | профиль | цитата
Опечатку маленькую нашел в своей последней редакции WinExec - вместо onConsoleError выдавалось событие onConsoleResult (проклятый копи-паст!). nesco, коммитни поправленный *.pas.
карма: 26

0
Разработчик
Ответов: 26149
Рейтинг: 2127
#19: 2019-01-11 18:27:59 ЛС | профиль | цитата
Netspirit писал(а):
Опечатку маленькую нашел в своей последней редакции WinExec - вместо onConsoleError выдавалось событие onConsoleResult (проклятый копи-паст!). nesco, коммитни поправленный *.pas.

Только в понедельник поправлю. Скинь исправленный кусок кода прямо сюда.

Редактировалось 1 раз(а), последний 2019-01-11 18:28:48
карма: 22

0
Ответов: 4630
Рейтинг: 749
#20: 2019-01-11 18:33:35 ЛС | профиль | цитата
Возьми файл - там в нескольких местах поправки.
карма: 26

0
Разработчик
Ответов: 26149
Рейтинг: 2127
#21: 2019-01-11 18:46:49 ЛС | профиль | цитата
Netspirit писал(а):
Возьми файл - там в нескольких местах поправки.

Вижу, обязательно поправлю.
карма: 22

0
Разработчик
Ответов: 26149
Рейтинг: 2127
#22: 2019-01-15 16:16:23 ЛС | профиль | цитата
Закоммитил, проверяй
карма: 22

0
Ответов: 4630
Рейтинг: 749
#23: 2019-01-15 16:20:33 ЛС | профиль | цитата
Все нормально.
карма: 26

0
Разработчик
Ответов: 26149
Рейтинг: 2127
#24: 2019-01-15 16:39:33 ЛС | профиль | цитата
Ты там еще какое-то условие добавил, это для чего?
карма: 22

0
Ответов: 4630
Рейтинг: 749
#25: 2019-01-15 17:00:12 ЛС | профиль | цитата
Там одной строчкой вызывается 3 раза функция и создаются 6 каналов. Если результат этого выражения "ложь", то значит один из вызовов функций завершился ошибкой. Если 1-ый - тогда остальные вызовы не произойдут и ни одна пара каналов создана не будет. А вот если первый-второй вызов прошли успешно, а третий - нет, то будет создано 2-4 канала, а результат выражения все равно "ложь". Вот уничтожение этих каналов в случае ошибки и добавлено.

При написании кода это было неочевидно. С другой стороны, это маловероятная ситуация, поэтому я не акцентировал на этом внимание, но для "полноты кода" - необходимо. Ведь кто-то возьмёт и скопипастит его себе и так и будет кочевать по рукам.

Редактировалось 1 раз(а), последний 2019-01-15 17:00:47
карма: 26

0
Ответов: 44
Рейтинг: 0
#26: 2019-01-19 21:22:02 ЛС | профиль | цитата
После обновления компонента, работать он стал гораздо лучше.
Но есть маленький баг.
При запуске bat файла, информация передается в RichEdit и вот иногда, "батник" продолжает работать, а RichEdit перестает заполнятся текстом.
Возможно исправить?
карма: 0

0
Ответов: 4630
Рейтинг: 749
#27: 2019-01-20 18:13:15 ЛС | профиль | цитата
Событие onConsoleResult происходит в параллельном потоке - текст на RichEdit пробуй выдавать через компонент Synchronize. Попробуй замени RichEdit на Memo - так же себя ведет?
BaseD писал(а):
"батник" продолжает работать, а RichEdit перестает заполнятся текстом
А может, "батник" перестаёт выдавать данные, например, ожидает ввода от пользователя?
карма: 26

0
Ответов: 4
Рейтинг: 0
#28: 2019-01-20 22:21:51 ЛС | профиль | цитата
Netspirit, нет, это обычное echo.

Вот очень простенькая схемка, с рабочим батником и нужными консольными программами. Понажимайте кнопку тест. Конечное:
echo ============================================
echo.
echo -= DONE =-

Срабатывает не всегда.

Редактировалось 1 раз(а), последний 2019-01-20 22:52:38
карма: 0
PSPx.RU Team
0
Ответов: 4630
Рейтинг: 749
#29: 2019-01-21 12:00:10 ЛС | профиль | цитата
Запускать непонятное не хочется. Обрати внимание на полный путь к файлу: если в пути будут пробелы - у тебя не сработает. Полный путь с именем файла нужно заключать в двойные кавычки.

Есть такие соображения. В компоненте происходит ожидание завершения процесса. Предполагаю: пока я жду на FProcessH, конечный процесс может успеть записать в буфер канала последнию часть вывода и завершиться. Я на ожидании получаю сигнал завершения и прекращаю работу. А та последняя записанная в буфер часть остаётся мной непрочитанной и теряется. Может по получении сигнала завершения процесса надо ещё 1 раз прогнать проверку каналов на наличие данных?

in1975, попробуй замени файлами из этого архива и проверь: /getfile/38574. Желательно проверить нет ли нигде потери данных (сделать вывод того же батника из cmd.exe в файл и сравнить с тем, что выдаёт компонент).

Редактировалось 6 раз(а), последний 2019-01-21 12:36:18
карма: 26

0
Ответов: 2059
Рейтинг: 132
#30: 2019-01-21 18:10:21 ЛС | профиль | цитата
...
Беру свои слова обратно.
Всё заработало.

Редактировалось 7 раз(а), последний 2019-01-21 20:05:29
карма: 6

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)