|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||
Архитектура: парсинг и выгрузка текстовиков11.03.2020, 10:51. Показов 35911. Ответов 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
|
|||||||||||||
| 24.06.2020, 10:51 [ТС] | |||||||||||||
если ещё не запустить с др кнопки вспомогательный поток - то с 1-го раза можно выйти из окна Main...
хотя по новым технология, наверно, с контекстом GuiLock__ разобраться... имхо... - но раз на раз не приходится... ?? может, что-то упустила... ===== как вариант? -
Добавлено через 19 минут ===== p.s вот тоже пока не совсем понятно, по какому event'у обрабатывать закрытие формы по крестику (правый верхний угол окна) - WhenClose?.. (чтобы тоже выйти из вспомогательных потоков)... ведь всегда при длинных (да ещё многопоточных!) операциях хочется уметь выходить экстренно
0
|
|||||||||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|
| 25.06.2020, 07:57 [ТС] | |
|
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||
| 25.06.2020, 17:57 [ТС] | ||
взяла линки из класса формирования половины линков и отдала в dowloader... загрузились... пока через "не отвечает" - но уже хоть какая-то декомпозиция (чтобы не дублировать код)... пул потоков не за горами ... имхо... действительно, читабельная архитектура делает разработку приятней Добавлено через 18 минут p.s. на всякий случай - Qt multithreading PDF - там же Implementation of signal-slot: different threads p.p.s Beginning Qt p.p.p.s
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||
| 26.06.2020, 07:48 [ТС] | ||
|
Добавлено через 11 минут ?? а здесь - Multithreading with Qt - что-то много всяких new... Добавлено через 2 минуты ? или habr Правильная работа с потоками в Qt Добавлено через 2 минуты на оф. сайте - очень в общем или The Missing Article About Qt Multithreading in C++ Добавлено через 2 минуты и здесь на cyber'e Многопоточность или Qt/C++ - Урок 047. QThread - создание потоков в Qt === сориентируйте хоть в 2х словах (и линком если есть) - что лучше?
0
|
||
|
|
||
| 26.06.2020, 11:06 | ||
|
У Qt отличная документация c примерами туда стоит смотреть в первую очередь. Как учебник есть книги Шлее и Самерфилда.
2. Не нужно пихать bool стоит использовать std::atomic -ки, а на данный момент в QThread уже есть этот флаг для остановки потока isInterruptionRequested() 3. Есть еще модуль QtConcurent он более высоко уровнивый и там уже есть и пул потоков и ф-ции для распределения между потоками задач.
1
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||
| 26.06.2020, 11:36 [ТС] | |||
|
оказывается, и остановить поток можно - замечательно... спасибо Добавлено через 15 минут хотя на habr'e
(пока пилится на u++ - допилю, потом при случае подумаю о переезде, может и для др проекта)
0
|
|||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||
| 27.06.2020, 09:59 [ТС] | ||
|
-- есть вариант запуска 2х thread'ов параллельно... а ведь интереснее между ними communication сделать??... p.s. в общем и целом по тз: а) систему signal-slot банально заменила своей vba-шной манерой -- передавать флаги (например, об окончании загрузки или её прерывании), и возвращать в WorkerThread true or false, на основе которых WorkerThread возвращает в GUI-поток message (PromptOK or PromptExclamation-connection lost)... пока отлавливаю diconnect'ы сети на всякий случай... б) всё бы хорошо, когда connection'а нет, но в реале при загрузке сама загрузка останавливается, видимо, плохо родной библиотекой u++ - наверно, ждёт - стучится по url'у несколько раз?, - вобщем подвешивается на некоторое время - неприятно так долго ждать, пока downloader разберётся он подключен или нет... в) и вывод динамики процесса в Progress пока, как в тумане... не понятно, через что лучше обрабатывать i-тую подгрузку в downloader class'e чтобы отразить обратно транзитом через WorkerThread в Progress GUI потока - через Event или через PostCallback??... (мучают смутные сомнения - что это по сути одно и тоже?? может какой virtual void Event'a - override сделать??) Добавлено через 26 минут или инкапсуляция неверно выбрана?.. (класс winapp с методом workerThread И класс downloader(param массив линков))
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||||
| 27.06.2020, 11:26 [ТС] | |||||
|
0
|
|||||
|
|
||||
| 27.06.2020, 11:56 | ||||
|
Если долго возитесь в таких случаях стоит попробовать что-то другое. Добавлено через 3 минуты И как оказалось много поточность. Как по мне если GUI фреймворк не предусматривает синхронизацию GUI с вторичными потоками то это сразу ему огромный минус.
0
|
||||
|
392 / 337 / 66
Регистрация: 14.10.2014
Сообщений: 1,538
|
||||
| 27.06.2020, 12:09 | ||||
|
я конечно не специалист многопоточности, только недавно её начал изучать, но
И да на Qt, наверняка, было бы проще все ваши задумки реализовать. Как минимум, по нему есть куча примеров готового кода. Ну раз уж вы решилили использовать всё-таки использовать U++ - что ж удачи
0
|
||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||
| 27.06.2020, 12:21 [ТС] | ||||
|
по 2-й части: я о том же - что это не повод менять ide, а повод поднимать мат.часть по части ваших впечатлений о словарном запасе - здесь их не ждали... пишите своими словами и пишите по делу - будет и пополнение моего словарного запаса... последние несколько постов - сплошные ваши впечатления... ... я заметила последние несколько постов...
0
|
||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||||||||
| 27.06.2020, 16:19 [ТС] | |||||||||
|
спасибо тем, кто тратит время на то, чтобы поделиться знаниями и кодовыми строками Добавлено через 29 минут пример по линку из #209
а переделать хочу - чтобы по Event'у сдвига Progress'a, например, увеличивался счётчик в Status'e... читаю документацию - надеюсь, пользы будет больше, чем от ваших недовольств количеством community для пререканий с вами
0
|
|||||||||
|
|
|||
| 27.06.2020, 16:27 | |||
|
Добавлено через 4 минуты
0
|
|||
|
392 / 337 / 66
Регистрация: 14.10.2014
Сообщений: 1,538
|
||
| 27.06.2020, 19:14 | ||
|
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||||||||||||||||
| 27.06.2020, 21:31 [ТС] | ||||||||||||||||||
|
вобщем что и следовало ожидать - криво, грязно, но работает (не претендую пока на чистоту кода - просто логику проследить)
.h
.cpp
- надо просто запускать не параллельно, а др. из др. и Call для обращения к GUI
=====
Добавлено через 1 минуту ===== Добавлено через 16 минут P.S. ProcessEvent'ов для мышей и клавиш... остальные события в библиотеке ctrl... Коллбэки на ЭУ можно и лямбдами делать... не доказано, что коллбэки хуже сигнально-слотовой системы... возможно, их просто надо научиться использовать... имхо
0
|
||||||||||||||||||
|
|
|||||||
| 27.06.2020, 23:10 | |||||||
Добавлено через 2 минуты
0
|
|||||||
| 27.06.2020, 23:10 | |
|
В указанном dsn архитектура драйвера и архитектура приложения не соответствуют друг другу архитектура процессоров и компьютерная архитектура,Intel32. для первокурсников Ошибка "в указанном dsn архитектура драйвера и архитектура приложения" Архитектура бд Архитектура БД Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
BitTorrent (версия 7.11 English) и Меню Настройки
russiannick 15.11.2026
Пункты, отвечающие за отключение обновлений в BitTorrent версии 7. 11 (английской)
Options
Preferences
General
Language
|
Транслитерация текста с кириллицы на латиницу (вариант №4)
Maks 15.11.2026
Что-то я перемудрил с предыдущими версиями, в этот раз сделал всё проще, обратившись к функции "СтрокаЛатиницей" из типового общего модуля "СтроковыеФункцииКлиент".
В данной функции нет апострофов,. . .
|
BitTorrent (версия 4.3.9) и Меню Настройки
russiannick 15.11.2026
В меню Настройки можно отключить автоматическое обновление программы.
Карта этого меню приложена ниже.
Нужный пункт выделен красным.
Сервис
Настройки
Поведение
|
Транслитерация текста с кириллицы на латиницу (вариант №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
. . .
|