Страница 1 из 3
Get exit code - Получить код завершения работы стороннего приложения
Добавлено: 12 Март 2017, 20:45
Developer
Привет всем!
Необходимо получить в приложение созданное в Clarion код (строку) результата завершения работы стороннего приложения.
К примеру, всё что выдаёт на консольный экран команда DIR - всё это должно быть доступно приложению созданному в Clarion.
Пожалуйста, помогите с рабочим примером в коде Clarion
Get exit code - Получить код завершения работы стороннего приложения
Добавлено: 12 Март 2017, 20:59
Дед Пахом
Подозреваю, что команда DIR в своё завершение просто делает return 0, а всё что она выдаёт на экран это совсем не результат завершения.
Get exit code - Получить код завершения работы стороннего приложения
Добавлено: 12 Март 2017, 21:07
Developer
Дед Пахом спасибо за отклик!
Но необходимо получить не только Return Exit Code а в основном результат работы программы DIR - список каталогов - всё что доступно пользователю в консольном экране.
P. S. DIR - абстрактный пример.
Get exit code - Получить код завершения работы стороннего приложения
Добавлено: 12 Март 2017, 21:21
Дед Пахом
слишком абстрактный пример, ничего не понятно. Если нужно получить результат консольной утилиты, то проще всего перенаправить вывод с консоли в файл.
Get exit code - Получить код завершения работы стороннего приложения
Добавлено: 12 Март 2017, 21:23
Дед Пахом
А ещё проще запускать консоль прямо из приложения Clarion, тогда весь ввод/вывод доступен прямо в программе. Я выкладывал класс консоли в своём GitHub.
Get exit code - Получить код завершения работы стороннего приложения
Добавлено: 12 Март 2017, 21:25
Developer
Дед Пахом писал(а): слишком абстрактный пример, ничего не понятно. Если нужно получить результат консольной утилиты, то проще всего перенаправить вывод с консоли в файл.
Именно!
Подскажи, пожалуйста ссылку
Get exit code - Получить код завершения работы стороннего приложения
Добавлено: 12 Март 2017, 21:28
Дед Пахом
Get exit code - Получить код завершения работы стороннего приложения
Добавлено: 12 Март 2017, 21:34
Developer
Михаил - спасибо!
Уже что-то.
Теперь надо на твоём примере получить требуемый результат

Get exit code - Получить код завершения работы стороннего приложения
Добавлено: 12 Март 2017, 22:52
Дед Пахом
Ну напрямую прочитать stdout довольно проблематично. Проще так: допустим, юзер ввёл команду DIR, она у нас в переменной cmd. Выполняем DIR с перенаправлением в файл:
Код: Выделить всё
console.Write('Enter DOS command: ', FALSE)
cmd = console.ReadLine()
cmd = cmd & ' > cmd_stdout.txt'
RUN('cmd /c '& cmd, 1)
Теперь список папок и файлов в файле cmd_stdout.txt. Чтобы юзер не нервничал, что на экране не появился ожидаемый текст, выводим его самостоятельно: console.Write(filecontent)
Get exit code - Получить код завершения работы стороннего приложения
Добавлено: 12 Март 2017, 23:02
Developer
Пример успешно собран и запускает сторонние приложения, вот только непонятно куда выводит результат приложения (текст)

Get exit code - Получить код завершения работы стороннего приложения
Добавлено: 12 Март 2017, 23:17
Developer
О, уже прогресс - получилось!
Файл cmd_stdout.txt с требуемой информацией результата работы команды утилиты ipconfig /all
создан успешно!
Возможно ли работа без создания файла DOS (работа только в памяти)
А как теперь распарсить полученный результат и вытянуть необходимое значение в переменные Clarion?
Get exit code - Получить код завершения работы стороннего приложения
Добавлено: 12 Март 2017, 23:29
Дед Пахом
Developer писал(а): А как теперь распарсить полученный результат и вытянуть необходимое значение в переменные Clarion?
А об этом надо было подумать в первую очередь

Get exit code - Получить код завершения работы стороннего приложения
Добавлено: 12 Март 2017, 23:42
Developer
Дед Пахом писал(а): А об этом надо было подумать в первую очередь
Хорошая мысля приходит опосля
Есть ли примерчик как распарсить текстовый файл?
Get exit code - Получить код завершения работы стороннего приложения
Добавлено: 12 Март 2017, 23:54
RaFaeL
Интересно, а ты сам как Developer (т.е. разработчик) вообще что-то пишешь? )
Если даже распарсить текстовый файл пример нужен
Get exit code - Получить код завершения работы стороннего приложения
Добавлено: 13 Март 2017, 0:10
Дед Пахом
Developer писал(а): Файл cmd_stdout.txt с требуемой информацией результата работы команды утилиты ipconfig /allсоздан успешно!
Если нужно только распарсить вывод ipconfig, то тебе
сюда - получение информации об адаптерах.