1. планы, описание задачи:
хочу разобраться и наработать методику/код "формошлЁп-скрИптинга" для простого пользователя :о)
- GUI-формы будут на QT4/Lazarus (в данном случае рассматриваем QT4)
в GUI-форме:
- вызовы скриптов, внешних команд и пр...
- получение выхлопа скрипта & ERRORLEVEL для дальнешего анализа
т.к. GUI будут на QT4, то запуск скрипта / чтение выхлопа / ERR_LEVEL, ск.всего, будет на базе QT4
2. настройки и рабочие скрипты
- ini-файл с настройками
- каталог со скриптами (либо стандартный PATH)
3. чтение ini-файла, запуск скриптов
- GUI-программа загружает в буфер содержимое ini-файла
- реакция на кнопку -> вызов обработчика, типа:
Код: Выделить всё
run_id(int ID);
- запуск скрипта, анализ выхлопа/кода возврата и ... дальнейшая реализация в зов-ти от фантазии :о)
КОД_1 - запуск внешнего скрипта
архив code_1.tar.xz
Примерный выхлоп основной программы:
Код: Выделить всё
### qDebug()
exitCode () = ' 2 '
exitStatus() = ' 0 '
str_out = ' "test script 2, arg=--add_scr2_arg --add_qt_app_arg
" '
str_err = ' "" '
### printf()
exitCode () = '2'
exitStatus() = '0'
str_out () = 'test script 2, arg=--add_scr2_arg --add_qt_app_arg
'
str_err () = ''
1. qDebug - имеет "обрамление" с обоих сторон строк в виде:
Код: Выделить всё
' "' + '" '
ВОПРОС 1: это особенности отладочного вывода qDebug ?
в обоих случаях qDebug & printf при "выхлопе текста" запускаемого скрипта - "странная" печать строки, с переносом в конце, хотя сам выхлоп скрипта без переноса
Код: Выделить всё
str_out () = 'test script 2, arg=--add_scr2_arg --add_qt_app_arg
' !!! <-- вот тут перенос конца строки
прочие ВОПРОСЫ:
- может, для внутреннего использования, лучше/проще по старинке использоавть string, или вообще простой буфер char* str?
мне самому не оч. нравиться использовать qt-классы, для таких простых операций, но !!! логично писать в той "эко-системе" в которой пишешь GUI, мало-ли чего там еще в будущем шарахнет использовать, передать "какой особенный" параметр в QT4/GUI... имхо
уточнение:
- именно QT4
- согласен, для простых GUI на cli/YAD/Zenity, логично "это" делать на bash/perl итд, кому, что удобнее
- в инете есть много "простых" примеров с "кодом" на с/с++, но я не встречал что-бы было реализовано одновременно при запуске скрипта получение выхлопа и кодa-возврата.
- так-же не встречал подходящих/удобных/минимальных примеров/библиотек парсинга ini-файла, что-бы была организована работа с буфером а не с потоками (т.к. каждый раз для чтения ini-файла создаются/закрываются потоки... это не оптимально, надо будет подходящую библиотеку доробатывать, на примете inih, посмотрим, что можно сделать с ней :о)
буду благодарен за подсказки, ссылки, код итд ...
вопросы по написанию GUI и парсинг ini-файла будут позже
TAG: c,c++,gui,qt4,scripting