|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||
Архитектура: парсинг и выгрузка текстовиков11.03.2020, 10:51. Показов 35821. Ответов 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 архитектура драйвера и архитектура приложения" Архитектура бд Архитектура БД Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Транслитерация текста с кириллицы на латиницу (вариант №3)
Maks 15.11.2026
Обновленная версия предыдущей обработки.
Изменения коснулись букв: Ъ, Ы, Ь, Э, отображения которых зависят от положения реквизита "Транслитерация имён".
Изменено отображение буквы Й.
Добавлена. . .
|
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки.
Добавлено:
- Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
|
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы.
Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
|
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
|
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|