Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
 Аватар для sunjob
0 / 0 / 0
Регистрация: 13.02.2011
Сообщений: 40

Формошлепство на Linux для простого пользователя

22.06.2020, 20:58. Показов 2250. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
добрый день

1. планы, описание задачи:

хочу разобраться и наработать методику/код "формошлЁп-скрИптинга" для простого пользователя :о)
- GUI-формы будут на QT4/Lazarus (в данном случае рассматриваем QT4)

в GUI-форме:
- вызовы скриптов, внешних команд и пр...
- получение выхлопа скрипта & ERRORLEVEL для дальнешего анализа

т.к. GUI будут на QT4, то запуск скрипта / чтение выхлопа / ERR_LEVEL, ск.всего, будет на базе QT4

2. настройки и рабочие скрипты

- ini-файл с настройками
- каталог со скриптами (либо стандартный PATH)

3. чтение ini-файла, запуск скриптов

- GUI-программа загружает в буфер содержимое ini-файла
- реакция на кнопку -> вызов обработчика, типа:
Code
1
run_id(int ID);
- обработчик парсит буфер ini-файла, по ID получает имя_скрипта
- запуск скрипта, анализ выхлопа/кода возврата и ... дальнейшая реализация в зов-ти от фантазии :о)

КОД_1 - запуск внешнего скрипта
архив code_1.tar.xz

Примерный выхлоп основной программы:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
### 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 - имеет "обрамление" с обоих сторон строк в виде:
Code
1
' "' + '" '
(т.е. пробел + символ ковычки)

ВОПРОС 1: это особенности отладочного вывода qDebug ?

в обоих случаях qDebug & printf при "выхлопе текста" запускаемого скрипта - "странная" печать строки, с переносом в конце, хотя сам выхлоп скрипта без переноса
Code
1
2
str_out   () = 'test script 2, arg=--add_scr2_arg --add_qt_app_arg
' !!! <-- вот тут перенос конца строки
ВОПРОС 2 :почему?

прочие ВОПРОСЫ:
- может, для внутреннего использования, лучше/проще по старинке использоавть string, или вообще простой буфер char* str?

мне самому не оч. нравиться использовать qt-классы, для таких простых операций, но !!! логично писать в той "эко-системе" в которой пишешь GUI, мало-ли чего там еще в будущем шарахнет использовать, передать "какой особенный" параметр в QT4/GUI... имхо

уточнение:
- именно QT4
- согласен, для простых GUI на cli/YAD/Zenity, логично "это" делать на bash/perl итд, кому, что удобнее
- в инете есть много "простых" примеров с "кодом" на с/с++, но я не встречал что-бы было реализовано одновременно при запуске скрипта получение выхлопа и кодa-возврата.
- так-же не встречал подходящих/удобных/минимальных примеров/библиотек парсинга ini-файла, что-бы была организована работа с буфером а не с потоками (т.к. каждый раз для чтения ini-файла создаются/закрываются потоки... это не оптимально, надо будет подходящую библиотеку доробатывать, на примете inih, посмотрим, что можно сделать с ней :о)

буду благодарен за подсказки, ссылки, код итд ...

вопросы по написанию GUI и парсинг ini-файла будут позже

архив code_1.tar.xz

Проект на sourceforge.net.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.06.2020, 20:58
Ответы с готовыми решениями:

.NET Framework для разработчика и .NET Framework для простого пользователя это одно и тоже?
Если я обычный пользователь компьютера и не разрабатываю приложения .NET Framework, но запускаю их и пользуюсь ими на своём ПК и наоборот...

Что лучше для пользователя Linux, консоль или окна?
А какой толк от консоли? Зачем ее изучать обычному пользователю?

Нужны исходники простого простого приложения под Android для примера
можете дать ссылку на приложение под андроид?не Hello Word а какое нибудь другое но тоже простое на подобие этого ?хочу понять как...

24
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,819
27.06.2020, 11:59
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от sunjob Посмотреть сообщение
в процессе работы мы немного поднастроили программу, интерфейс, что-то еще... (те самые настройки в ini-файле), но мне не нужно было сохранять их, эти настройки, они были, типа "для посмотреть, для времено поработать"..
а она без нашего ведома, во время закрытия перезаписала настройки... так?
Если вы меняете данные внутри QSettings, значит декларируете ваше желание о том, чтобы они изменились в файле. Так что тут не может быть "без ведома". Вас же предупреждают об этом в документации.

Также функция все равно не будет ничего записывать, если файл был помечен каким-либо образом флагом "только для чтения".
Цитата Сообщение от DrOffset Посмотреть сообщение
Т.е. если файл не меняется, то единственное место, где будет открыт файл - это конструктор (там же он будет и закрыт после чтения).
То, что функция sync вызывается - не означает, что она что-то будет записывать или читать. Это она делает только в случае, если файл должен измениться.
0
 Аватар для sunjob
0 / 0 / 0
Регистрация: 13.02.2011
Сообщений: 40
27.06.2020, 17:32  [ТС]
да, все как то так... :о) но карявенько! в мое понимание как-то не совсем вписывается (ну это частности и субьективности) :о)

Если вы меняете данные внутри QSettings, значит декларируете ваше желание о том, чтобы они изменились в файле.
напомнило ...
по своему он прав, а ... по моему - нет!
итак, танцуем от печки

сохраненный в памяти обьект ini-файл, далее [*] - и будем рассматривать эту самую печку, source/источник, т.к. иметь два обьекта настроек (в памяти (*) и еще отдельный обьект/структуру с истинными полями) - это слишком расточительно! должен быть один (а то так можно дойти и до отдельных архивных копий на каждый день в текущем рабочем экземпляре программы)

ну и ... одно вытекает из другого: если у нас один источник настроек (*) из которого и "черпает настройки" приложение, то, настраивая/изменяя его мы и ... натыкаемся на те самые грабли, с принудительным сохранением (т.е. все по хелпу, все так как "надо", но на деле, с "моим подходом" - совсем не логично, не удобно итд)

так может что-то надо в консерватории подправить?
или в своей точке зрения на подход к работе с QSettings?
может я что-то непонимаю, не знаю, в парадигме QT?

...

То, что функция sync вызывается - не означает, что она что-то будет записывать или читать. Это она делает только в случае, если файл должен измениться.
а откуда "она" узнает, что "файл должен измениться"? держим первородную копию обьекта в памяти (или хеш)?

Также функция все равно не будет ничего записывать, если файл был помечен каким-либо образом флагом "только для чтения".
где "помечен"? в файловой системе? дак это очевидно?!!! и не относится к логике работы обьекта QSettings... или где-то в кутях?

Добавлено через 8 минут
в данном случае я не пытаюсь заточить QT под "свои кривые руки", я хочу понять логику/структуру (и опять-таки парадигму, слово какое подходящее :о))) , что-бы ей пользоваться далее для работы, в данном случае с обьектом QSettings.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
27.06.2020, 19:02
Цитата Сообщение от sunjob Посмотреть сообщение
GUI-формы будут на QT4
По чему не Qt3 он же раритетнее?
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,819
27.06.2020, 20:02
Цитата Сообщение от sunjob Посмотреть сообщение
и не относится к логике работы обьекта QSettings... или где-то в кутях?
Относится. QSettings явно смотрит на флаги файловой системы и строит логику на основании этого.

Цитата Сообщение от sunjob Посмотреть сообщение
а откуда "она" узнает, что "файл должен измениться"? держим первородную копию обьекта в памяти (или хеш)?
Нет, ничего не держится. Там просто флаг - "надо обновлять\не надо обновлять". Если вы вызвали setValue с новыми данными, то флаг этот сбрасывается, и следующий вызов sync попробует обновить данные в файле. Если файл доступен для записи - эта попытка закончится успехом. Если нет, то ничего не произойдет, файл останется прежним.

Цитата Сообщение от sunjob Посмотреть сообщение
в данном случае я не пытаюсь заточить QT под "свои кривые руки"
Вообще никто не утверждал, что QSettings всенепременно вам подойдет. Я лишь поправил очевидно неверные выводы о его работе (про потоки и чтение файла на каждый чих). Что дальше с этим делать - всецело ваша зона ответственности.

Добавлено через 15 минут
Цитата Сообщение от sunjob Посмотреть сообщение
напомнило ...
по своему он прав, а ... по моему - нет!
Ну, понимаете ли. Если вы берете инструмент, то вы вынуждены принимать правила его использования. Если вы взяли сверло по дереву, то вы декларируете, что собираетесь сверлить дерево. Если вы рассчитывали им просверлить металл, то это ошибка - не получится, или получится, но это будет выглядеть "карявенько" (с). И сверло не виновато, что вам на самом деле нужно было работать с металлом.

Тоже самое с QSettings - есть документация, в которой описаны правила работы с ним. Так что если вы что-то делаете с QSettings, то подписываетесь под правилами его использования.

В любом случае - задача верного выбора инструмента - это ваша задача, на форуме никто не знает что вы собираетесь делать с ini-парсером, поэтому и выбрать за вас никто не сможет. Вам только могут подсказать, что ini-парсер в Qt - есть (это было сделано), указать на явные ошибки в понимании его работы (это тоже было сделано). Форум свою функцию выполнил, дальше ваш ход.
0
 Аватар для sunjob
0 / 0 / 0
Регистрация: 13.02.2011
Сообщений: 40
01.07.2020, 19:36  [ТС]
дотошно потестировал QSettings ... действительно ... не очень удобный и не доработанный "объект"
люди аж с 15го года на форумах его ругают, пишут про косяки и недоделанность... видимо, воз и ныне там :о)

остановился на IniParser - маленькая, простая, удобная, все на месте, под рукой, понятно-логично

спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.07.2020, 19:36
Помогаю со студенческими работами здесь

Не запускается Cygwin под Win7 от простого пользователя
Здравствуйте дорогие форумчани! Дело вот в чём: переустановил винду, тогда стал ставить свои любимые программки, в том числе и cygwin....

Сборка исходников RakNet и запуск простого примера под Linux
Привет. В плюсах я новичок. Пытаюсь собрать простой пример тестового чата из RakNet...

Пример работы простого профайла пользователя на Laravel 5.7 (можно и 5.5) - подскажите пожалуйста
Здравствуйте. Я совсем недавно начал изучать Laravel, поэтому простейшие вещи вызывают кучу вопросов, и чем больше я читаю...

Простой выбор простого движка для простого сайта с простой БД
Здравствуйте, уважаемые знатоки! Встала задача - нужно выбрать простой движок для сайта по аренде квартир Принцип работы прост до...

Разница в работе bat-файла при его запуске от имени простого пользователя и от имени администратора
Здравствуйте. Пытаюсь создать .bat который: создаёт папку %ProgramFiles%\MyProg и копирует туда файлы создаёт папку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru