Страница 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
Михаил - спасибо!

Уже что-то.

Теперь надо на твоём примере получить требуемый результат :wink:

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
О, уже прогресс - получилось! :D

Файл cmd_stdout.txt с требуемой информацией результата работы команды утилиты ipconfig /all
создан успешно!

Возможно ли работа без создания файла DOS (работа только в памяти) :?:

А как теперь распарсить полученный результат и вытянуть необходимое значение в переменные Clarion?

Get exit code - Получить код завершения работы стороннего приложения

Добавлено: 12 Март 2017, 23:29
Дед Пахом
Developer писал(а): А как теперь распарсить полученный результат и вытянуть необходимое значение в переменные Clarion?
А об этом надо было подумать в первую очередь :-)

Get exit code - Получить код завершения работы стороннего приложения

Добавлено: 12 Март 2017, 23:42
Developer
Дед Пахом писал(а): А об этом надо было подумать в первую очередь
Хорошая мысля приходит опосля :D

Есть ли примерчик как распарсить текстовый файл?

Get exit code - Получить код завершения работы стороннего приложения

Добавлено: 12 Март 2017, 23:54
RaFaeL
Интересно, а ты сам как Developer (т.е. разработчик) вообще что-то пишешь? )
Если даже распарсить текстовый файл пример нужен

Get exit code - Получить код завершения работы стороннего приложения

Добавлено: 13 Март 2017, 0:10
Дед Пахом
Developer писал(а): Файл cmd_stdout.txt с требуемой информацией результата работы команды утилиты ipconfig /allсоздан успешно!
Если нужно только распарсить вывод ipconfig, то тебе сюда - получение информации об адаптерах.