|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,552
|
||||
Архитектура: парсинг и выгрузка текстовиков11.03.2020, 10:51. Показов 33042. Ответов 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,552
|
|||||||||
| 19.06.2020, 16:37 [ТС] | |||||||||
|
Добавлено через 8 минут Добавлено через 47 минут Добавлено через 2 часа 24 минуты ![]() ну и ладно... если он
=== ИТОГО: 2. thread.join; или async сам возвращает в текущий поток своим .get() === sorry за вчерашнюю панику - - всем спасибо
0
|
|||||||||
|
389 / 334 / 66
Регистрация: 14.10.2014
Сообщений: 1,480
|
|||
| 19.06.2020, 19:02 | |||
|
Эта функция вернёт фьючерс и гарантирует выполнение вызываемой сущности, передаваемой ей в качестве аргумента. Эта сущность будет выполнена либо параллельно (если есть такая возможность), либо последовательно. Про GUI с потоками: я не знаю, как в U++ организована обработка событий, в Qt к примеру сигнально - слотовая система. Так вот она с многопоточностью может иногда не работать. Пример: если запустить какую-нибудь сущность (класс) в отдельном потоке и попытаться обрабатывать его сигналы (с параметрами) - то это может не работать. Лечится специальным макросом. А проще делать так - работать с сигналами и слотами без параметров. А необходимые параметры (в ответ на сигнал) передавать через гетеры - такой способ прекрасно работает
0
|
|||
|
|
|||
| 19.06.2020, 20:02 | |||
|
Может не работать? Что за формулировки блин.
Добавлено через 2 минуты
0
|
|||
|
389 / 334 / 66
Регистрация: 14.10.2014
Сообщений: 1,480
|
||
| 19.06.2020, 20:17 | ||
|
Добавлено через 2 минуты Просто у меня было так, что объект с параметрами в одном потоке, а гуи в другом. Решений было два - либо регить нужный класс специальным макросом, либо передавать нужные параметры через гетер
0
|
||
|
|
|
| 19.06.2020, 20:48 | |
|
Тут вообще стоит задаться вопросом есть ли в Ultimate++ "поддержка" многопоточности.
Имею виду синхронизацию GUI и вторичных потоков. Поэтому я считаю что выбирать всегда стоит Qt так как в нем с этим все очевидно в отличии от других фремймворков.
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,552
|
|||||||
| 20.06.2020, 18:31 [ТС] | |||||||
|
но пока не сделаю работающий код - не поверю ничему... мне потом свой код читать легче... и так наворачиваются иногда листинги, когда все нюансы надо учесть...Кликните здесь для просмотра всего текста
вообще люблю краткие решения, потому что проект всегда имеет свойство разрастаться дальше - с появлением новых нюансов или просто если захочу его масштабировать и на др задачи или файлы др. рода (там просто инфо очень разношёрстная нужна и источник не от меня зависит - подстраиваюсь всегда в коде, как могу - стараясь не разжёвывать коду то, что ему подсовываю - т.к. знаю, что может и меняться и усложняться входящая инфо и не мной - и опять парсить и/или менять пути и т.д.)...
0
|
|||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,552
|
|||
| 20.06.2020, 18:49 [ТС] | |||
а GuiLock видимо сам какой синхронизирующий (даже, не примитив, а класс самой u++)
0
|
|||
|
415 / 150 / 48
Регистрация: 02.06.2016
Сообщений: 364
|
|||||||
| 21.06.2020, 13:06 | |||||||
1
|
|||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,552
|
||||
| 22.06.2020, 15:41 [ТС] | ||||
усложнённый вариант, наверно, Mediator - Посредник - чтобы передать что-то ещё... или даже паттерн Команда можно рассмотреть... p.s. как вариант, возможно, стоит делать thread.detach (чтобы не ждать thread.join в главном потоке) - и по окончанию подгрузки послать Message в главный поток?? может это вариант "совсем отвязаться от главного потока до окончания второстепенного"? (ну и, полагаю, работать с std:: promise, а не strd::futures)? или вы знаете др. способ совсем не лочить GUI ?? ![]() p.s, Кликните здесь для просмотра всего текста
Добавлено через 2 минуты чувствую мы уже приближаемся к нему... в хорошем смысле
0
|
||||
| 22.06.2020, 18:09 | |
|
0
|
|
|
389 / 334 / 66
Регистрация: 14.10.2014
Сообщений: 1,480
|
|
| 22.06.2020, 18:14 | |
|
JeyCi, если GUI виснет - что тут можно сделать - запускать в отладке и смотреть, когда он виснет, пытаться найти проблему - только так
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,552
|
|||
| 22.06.2020, 19:21 [ТС] | |||
|
на сайте видела только такое - Resolving memory leaks... но как отлавливать утечки - ещё не в теме... ?? наверно, мониторя глазами окошко справа - там вроде ассемблер (call, add, mov, jmp и др)
0
|
|||
|
|
|
| 22.06.2020, 19:25 | |
|
JeyCi, Насчет выбора фреймворка вот есть статейка https://habr.com/ru/post/194590/ но главное это почитать комментарии.
1
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,552
|
||
| 22.06.2020, 19:37 [ТС] | ||
|
перенесла код из main в обработку нажатия на кнопку - подождала ... вроде дождалась окончания подгрузки... скорость вроде не уступает vba- варианту... и то радует... там кстати тоже пока работает макрос - ничего особо не сделаешь... осталось всё перетрясти для теста многопоточности и красоту наводить
0
|
||
|
415 / 150 / 48
Регистрация: 02.06.2016
Сообщений: 364
|
||||||||||||
| 22.06.2020, 19:37 | ||||||||||||
|
Здесь выделяется память через new каждый раз, при каждом нажатии кнопки:
К тому же таем еще из левого класса зачем-то удаляется основное окно Qt.
1
|
||||||||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,552
|
||
| 22.06.2020, 19:44 [ТС] | ||
![]() Добавлено через 1 минуту а как отловить в процессе разработки?.. а не уже при эксплуатации софтины нарваться?.. на утечку...
0
|
||
| 22.06.2020, 20:00 | |
|
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,552
|
||
| 23.06.2020, 06:21 [ТС] | ||
|
0
|
||
| 23.06.2020, 06:21 | |
|
В указанном dsn архитектура драйвера и архитектура приложения не соответствуют друг другу архитектура процессоров и компьютерная архитектура,Intel32. для первокурсников Ошибка "в указанном dsn архитектура драйвера и архитектура приложения" Архитектура бд Архитектура БД Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|