|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||
Архитектура: парсинг и выгрузка текстовиков11.03.2020, 10:51. Показов 34762. Ответов 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
|
||
| 02.07.2020, 11:26 [ТС] | ||
|
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 02.07.2020, 11:28 | |
|
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||
| 02.07.2020, 11:35 [ТС] | ||
|
а вызывать др callbacks - они встанут в очередь на действие "а посля" - понимаю так... имхо (и по тому WhenAction, который "удивил", начав работать "а посля") Добавлено через 6 минут - там пробовала, потом закоментировала
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 02.07.2020, 12:06 | |
|
JeyCi, не вижу причин, чтобы это не работало. Пробуйте еще.
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||||
| 02.07.2020, 12:16 [ТС] | ||||||
|
и что самое интересное - (во вторичном потоке) -
p..s. вообще лок или сигнал в очередь на обработку - думаю не принципиально для отражения в status... когда же в GUI надо сбрасывать много рисования, например, из вторичного потока, когда ему самому ещё работать и работать - то это лишь вопрос быстродействия останется... с сигналами, возможно, и можно не тормозить сильно... но оставлять всё на "а посля" - выигрыш по времени тоже сомнительный... вобщем пробую дальше
0
|
||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||
| 02.07.2020, 12:22 | |||
|
А вот гораздо более важная проблема верного распределения ответственностей решится раз и навсегда. Представьте себе художника, который рисует картину. И несколько других людей, которые в рандомные моменты времени останавливают его и дорисовывают что-то сами. Вот именно так сейчас у вас и работает. Я достаточно писал сам и видел систем, наподобие этой UPP, чтобы сказать, что это путь в никуда.
1
|
|||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||
| 02.07.2020, 12:31 [ТС] | |||
|
DrOffset-у, спасибо!! за знакомство с deadlock'ом - профи всегда его распознают... пока вы Avazart, кричите, что вам мьютексы (лок) и слипы (любое действие вместо него) глаза мозолят - так и не смотрите на них, что ли... ![]() Добавлено через 7 минут
0
|
|||
| 02.07.2020, 12:31 | |
|
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 02.07.2020, 12:35 | |
|
JeyCi, в общем я понял, что пока вы сами этот кирпич не словите, будете спорить. Ну ладно, я подожду.
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||
| 02.07.2020, 12:54 [ТС] | |||
|
Добавлено через 2 минуты воочию сам deadlock, чем читать о нём в книжках... или ещё какие тонкости многопоточности
0
|
|||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||||||||||||||||
| 02.07.2020, 12:56 | |||||||||||||||||
Сообщение было отмечено JeyCi как решение
Решение
JeyCi,
main.cpp
TestThread.h
TestThread.lay
1
|
|||||||||||||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||
| 02.07.2020, 13:42 [ТС] | ||
|
но RWLock может даже попроще, чем Mutex в U++ == За PostCallback - спасибо!! - его тоже надо было как-то увидеть воочию - с кнопки, запускающей доп. поток, который Правильно ставит в очередь свои коллбэки... увидела на родном примере - и сразу всё становится на свои места... у этого кода ноги растут нормально... Благодарю! буду изучать и применять
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||||||
| 02.07.2020, 13:54 | |||||||
|
JeyCi, или можно оставить GuiLock, но изменения в виджете надо делать не напрямую, а через функцию Call.
Тогда поточная функция из моего примера выглядеть будет как-то так: Кликните здесь для просмотра всего текста
Добавлено через 6 минут Добавлено через 2 минуты Это тоже, кстати, полезный навык выделять главное из цельного описания.
1
|
|||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||
| 02.07.2020, 14:03 [ТС] | |||
просто реставраторы ещё и поверх нарисованного могут нарисоват, чтобы выровнять или искривить )...
0
|
|||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||||||
| 02.07.2020, 14:11 | ||||||
![]()
И работает оно так, потому что это единственный способ контролировать сложность. По-другому просто не получится.
Выстрелить это может, если у вас есть два или более потоков одновременно меняющих GUI.
1
|
||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||
| 02.07.2020, 14:23 [ТС] | ||
|
хотя по сути задачи понадобиться WorkQueue... по сути... или одно другому не мешает (thread_pool и workqueue)?.. да ещё и выстрелить может? (в thread_pool'e? или в thread-safe workqueue'е?)
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 02.07.2020, 14:30 | |
|
JeyCi, нет, я неправильно выше сказал. Все, что приходит из потоков будет упорядоченно очередью. Речь видимо все-таки о работе основного потока.
Проще всего не допускать этого совсем, и не разрешать менять из основного потока то, что может измениться под влиянием второстепенных.
1
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||
| 02.07.2020, 17:59 [ТС] | ||||
- вот это объяснение! - на все случаи жизни... понимание - которого мне очень не хватало, чтобы не остерегаться потоков... Thanks a lot !! ![]() Добавлено через 13 минут p.s. всё-таки добавлю: или блокировать (синхронизировать)... если вдруг случится такое, что надо всё-таки... Добавлено через 3 часа 5 минут p.p.s и чтобы, обойдя одни грабли, не попасть на вторые - я процитирую вас ещё раз p.p.p.s. про Atomic (полагаю. lock-free возможность обеспечивать thread-safety) - отдельная история - oleg-m1973 оставлял здесь (#159) линк вот и ИТОГ всех сложностей (в придачу к принципам SOLID) Добавлено через 1 минуту ... а паттерны - это уже предпочтения дизайнера - исходя из проф.опыта...
0
|
||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||
| 03.07.2020, 09:00 [ТС] | ||
|
отметила в теме Лучшие ответы по теме - 4-й отметить не могу (видимо есть лимит) - оставлю линком на #103
0
|
||
| 03.07.2020, 09:00 | |
|
В указанном 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, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|