|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||
Архитектура: парсинг и выгрузка текстовиков11.03.2020, 10:51. Показов 34784. Ответов 421
Метки вопросы наследования (Все метки)
начало было положено в ветке - Считать текстовые файлы из папки - там и возник вопрос об Архитектуре...
собрала... осталось отображение создать (типа I_tbl_Show) и пронаследовать ? в разные классы пункта назначения (или на консоль, или в файл, или в БД, или допустим ещё в форму)... N.B. классы (пункты-назначения) делать не надо - эти View уже реализованы разработчиками того ПО, на котором сейчас идёт работа... а) пока что можно просто прописать функции-члены класса; и по месту использовать, что надо при разработке - в файл или на консоль; б) в перспективе для Release - реализовать и откомпилировать и выгрузку и в файл, и выгрузку в БД, и отражение в DataGrid... === !! Т.Е. если в Release захочется и выгрузку в текст, и в БД, и допустим ещё в форму (например с разных кнопок сделать) - тут уж лучше и писать, как положено, наследование??... -- к слову из прошлой ветки о: === Обоснование выбора уровня Абстракции (I_tbl_Show со всеми виртуальными функциями): чтобы не дублировать код-сбора-для-выгрузки -- сделать class Table - и класс-интерфейс I_tbl_Show, в котором обозначить virtual-функции выгрузки... эти функции определить в др. классах - типа Interface (IwriteCSV, IwriteDB, IwriteDataGrid)... p.s. классы консоль, файл, бд, DataGrid - не создаём, т.к. эти пункты назначения уже присутствуют... p.p.s. вывести конечные интерфейсы с определёнными методами записи на кнопки... === ИЛИ то, что подчёркнуто чуть выше, стоит реализовать в одном классе Table, и здесь же задать все virtual функции ?? === на скрине: синие - классы, зелёные - интерфейсы (в с++ по сути тоже классы) птицами отмечены уже кое-как реализованные классы (2 птицы) курсивные стрелки - отсутствие наследования ![]() Добавлено через 7 минут вобщем вопрос: class Table и класс I_Tbl_Show - объединить или нет? Добавлено через 10 минут p.p.s. чтобы избежать проблем Ромба и такого: Неоднозначность при множественном наследовании
0
|
||||
| 11.03.2020, 10:51 | |
|
Ответы с готовыми решениями:
421
Проверка двух текстовиков
Сделать скрипт для вывода текстов из текстовиков |
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|
| 03.07.2020, 19:01 [ТС] | |
|
и U++ Semaphore - если понадобиться
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|
| 05.07.2020, 08:32 [ТС] | |
|
код #222 от GoshaM работает на U++ v.13068 от 2019-05-01 (2019.1 ) -- upp-win-13068.7z -- theide32.exe...
Build_Method настройки приложила к посту... Path, Include и Lib настраивала к msys2 c mingw_9_3... надеюсь со временем они поправят свой CoWork и для более новых версий Фреймворка u++
1
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|
| 05.07.2020, 15:39 [ТС] | |
|
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||
| 07.07.2020, 21:06 [ТС] | |||
|
и тем не мененее
в любом случае для перегруженных коллбэками app'ов можно посмотреть:
0
|
|||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 07.07.2020, 21:47 | ||
|
Помимо сигналов-слотов, в Qt также доступны Events.
1
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||||||||||
| 08.07.2020, 10:18 [ТС] | ||||||||||||
|
1) сделала WorkerThread членом класса (=> Call, который унаследован от родного для U++ Ctrl, - перестал быть undeclared) 2) воспользовалась родным свойством U++ потоков IsShutdownThread (сделала по-человечески) 3) проверку IsShutdownThread переместила до локирования Gui для его обновления (иначе снова попадала в deadlock) .h
.cpp
p.s. а с callback'ами всё ещё проще при подстановке их в код вместо GuiLock + Call p.p.s. а закрыться по крестику - это банально Деструктор
0
|
||||||||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 08.07.2020, 10:22 | |
|
JeyCi, в деструктор еще можно добавить Wait, если вы запустили поток, а потом решили закрыть приложение.
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||
| 08.07.2020, 10:45 [ТС] | ||||
|
спасибо Добавлено через 3 минуты Добавлено через 15 минут
0
|
||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||
| 08.07.2020, 12:32 | |||
|
Во многих реализациях системных потоков вы должны обязательно делать join всякому потоку, который был запущен не в режиме detach. Так что вы потенциально оставляете программу в состоянии UB, если не будете делать Wait.
1
|
|||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||||||
| 08.07.2020, 14:59 [ТС] | ||||||||
0
|
||||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 08.07.2020, 16:59 | ||
|
Добавлено через 1 минуту JeyCi, Грубо говоря, попросили занятого друга присоединиться к вашей компании, а потом удивляемся, что он всех задерживает ) Пусть сначала доделает свои дела, а потом приглашайте
1
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||
| 08.07.2020, 20:29 [ТС] | |||
|
Добавлено через 56 секунд хотя, действительно, тут, наверно, ещё в процессе... ещё не приглашали? ещё не присоединяли после завершения поток? т.е. он ещё живой?
0
|
|||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||
| 09.07.2020, 00:08 | |||
|
Они там ждут завершения в цикле, разбавляя это sleep`ами. У нас бы такой код ревью не прошел. При том, что дождавшись, они все ранво должны вызвать join, если в их системе под капотом потока, например, pthread. А они этого не делают. Добавлено через 9 минут Например, joinable потоки, для которых не вызван join становятся потоками-зомби в unix. Отсюда собственно все вышесказанное мной. https://man7.org/linux/man-pag... oin.3.html
1
|
|||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 09.07.2020, 09:54 | |
|
...
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||
| 10.07.2020, 08:30 [ТС] | ||||
|
вобщем оттестила httpRequestЫ в CoWork'ах
![]()
и совет делать с клиента WebSocket::Connection - не вижу смысла, т.к. async_read в U++ с одного сокета только если писать свой класс... и этот зверь всё-таки, видимо, для вывода в html_browser, а не мои текстовики... === а самого родителя request'ов - TCPConnection класс - подрядить иначе, чем 2 указанных варианта - не вижу... да и зачем connection (если sendall по stream с сокета, как в Python в u++ не нашла)... всё свои классы писать надо... да и наверно, действительно, connection - слишком жирно, когда нужны просто ответы на запросы, для сохранения их в БД... имхо - придётся по вопросу файлов с i'net (чужого сервера) остаться на одном потоке ![]() в любом случае - всем спасибо за разбор полётов ![]() Добавлено через 6 минут возможности Qt - (Qnetworkrequest и Websocketserver, по последнему картинки здесь)
0
|
||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 10.07.2020, 08:41 | ||
|
Это статус, в соответствии с которым программист должен выполнить асинхронное ожидание завершения операции на сокете.
1
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|
| 10.07.2020, 08:43 [ТС] | |
|
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||
| 10.07.2020, 08:48 | |||
|
https://docs.microsoft.com/en-... or-codes-2
0
|
|||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||||||
| 10.07.2020, 20:45 [ТС] | |||||||
|
=== честно говоря, тема, видимо, не нова... и в U++ имеется (даже без select'ов)
направьте на путь истинный, please, чтобы уже со спокойной душой ушла в др. ветку... а то как-то поток логической мысли по потокам остановить не возможно... === боюсь, что вы посоветуете async-await, а для него нужен MSVC компилятор... ----- или boost может помочь? ----- хорошее описание асинхронности vs. параллелизма здесь... хоть библиотека и под Node.js рассматривается, но она на C и некоторые умудряются рассмотреть её и для С++ для работы с resumable functions (хотя тоже компилируется MSVC - всё дело в этом переключателе контекстов, который в boost context.h под mingw никак)
![]() Добавлено через 2 часа 1 минуту P.S. нет, всё-таки, наверно, банально как-то надо обработать эту ошибку через метод IsSocketError() класса HttpRequest : public TcpSocket ... и как-то это сделать в асинхронном режиме?Добавлено через 48 минут Добавлено через 1 час 38 минут ВОБЩЕМ инструменты имеются в U++ Кликните здесь для просмотра всего текста
0
|
|||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||||
| 10.07.2020, 21:24 | |||||
|
Добавлено через 1 минуту Добавлено через 3 минуты В целом, должно здорово помочь общее представление о программировании сетей, например по книге У.Р.Стивенса. Если классы в U++ - это тонкие обертки над системными сокетами, то различий будет крайне мало, в основном в сторону упрощения. Добавлено через 5 минут Скорее всего это происходит потому, что вы пытаетесь слать данные в неблокирующий сокет без какого-либо контроля, да еще и из разных потоков. Я бы сказал, что это плохая практика. Сделайте очередь запросов к сокету, в нее будете добавлять из произвольного потока, разматывайте очередь через select\poll\etc в каком-то одном потоке. Или верните блокирующий режим, тогда операция будет ждать завершения, но в целом это хуже для вычислений в текущем потоке. Лучше сделайте по первому варианту.
1
|
|||||
| 10.07.2020, 21:24 | |
|
В указанном dsn архитектура драйвера и архитектура приложения не соответствуют друг другу архитектура процессоров и компьютерная архитектура,Intel32. для первокурсников Ошибка "в указанном dsn архитектура драйвера и архитектура приложения" Архитектура бд Архитектура БД Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|