Вверх ↑
Этот топик читают: Гость
Ответов: 1841
Рейтинг: 369
#1: 2014-12-07 10:59:03 ЛС | профиль | цитата
Пару дней назад, возникла идея реализовать поддержку Qt в пакете Windows.
Идея заключалась в том, чтобы использовать элемент класса UseHiDLL, который позволяет среде получать информацию о точках прямо из библиотеки, а также, подгружать иконку и отображать её на элементе.
Кроме того, появляется возможность создать шаблон-обёртку над реализацией взаимодействия библиотеки и средыприложения и максимально упросить написание кода.
В данном случае, мне пришлось переписать реализацию элемента UseHiDLL, т.к. больно запутанный он был
В итоге, получаем все возможности Qt, C++ и кучу других возможностей
И при этом, не нужно писать и строчки кода на DelphiFPC.
Проект является just for fun и полностью свободен


Описание.
Типы данных.
На данный момент, поддерживается 4 типа данных:
1) data_str = char* = String (поддерживается кириллица)
2) data_int = int = Integer
3) data_real = double = Real
4) data_null - отсутствие данных

Структура проекта.
global.h - заголовочный файл.
В нём описал все типы данных, которые нашёл в Share.pas
Также там имеются структуры и типы прототипов функций (для callback).

hidll.h и hidll.cpp - основа в которой постарался учесть все нюансы.
Собственно, это и есть основа проекта.
В нём объявлены вспомогательные функции, прототипы и реализованы обратные вызовы, для взаимодействия с приложением и средой.
Вспомогательные функции:
#cpp
QVariant toVariant(const TData &data); // Преобразуем TData в требуемый тип данных
TData toData(const QVariant &var = QVariant(), byte type = data_null); // Преобразуем любой из поддерживаемых типов данных в TData
void onEvent(const TData &data, int index); // Вызов события (callback)
void getData(int index); //Получаем данные (callback)
main.h и main.cpp - реализация с максимальным упрощением.
Тут собственно, мы и будем писать наш код
В заголовке объявлено всего 3 служебные функции:
Их нельзя удалять или изменять названия.
#cpp
void addPoints();
void doWork(const TData &data, int index);
void getVar(TData &data, int index);

В общем, функции doWork, getVar вызываются управляющей программой.
Функции обратного вызова onEvent, getData вызываем мы.
Вспомогательные функции toVariant, toData преобразуют данные.
Вроде всё


Собственно архив с компонентом, проектом Qt5.4.1 и примером версии 1.1: https://yadi.sk/d/FYUonPlsgJqoh
Для корректной работы среды HiAsm с данной библиотекой, требуется скопировать все dll (включая platforms) из папки demo, в корневой каталог HiAsm.
Само приложение не требует для работы HiAsm.
карма: 1
1
Голосовали:flint2
vip
#1.1контекстная реклама от партнеров
Ответов: 1841
Рейтинг: 369
#2: 2015-04-28 20:21:11 ЛС | профиль | цитата
Ну вот, вспомнил свою старенькую подделку и решил немного доработать, и более наглядно продемонстрировать возможности.
В общем, слегка поправил реализацию с учётом новых знаний, подключил пару визуальных демонстраций, вызвать которые можно прямо из программы созданной в HiAsm.
Также демонстрация взаимодействия между библиотекой HiDLL.dll и программой.
На этот раз, задействовал намного большие возможности Qt (5.4.1_gcc4.9.2 к слову) по сравнению с предыдущим вариантом (сигналы/слоты/потоки/сцена/рисование/виджеты).
В шапке прикрепил обновлённую версию - 1.1.
Пример тестировал в Windows 7x32/x64.

p.s. Кстати, фракталы в одном из примеров mandelbrot - нечто
карма: 1
1
Голосовали:flint2
Ответов: 655
Рейтинг: 18
#3: 2015-04-30 22:41:00 ЛС | профиль | цитата
CriDos, можно по подробнее что позволяет ваш компонент?
карма: 0

0
Ответов: 1841
Рейтинг: 369
#4: 2015-05-01 01:02:54 ЛС | профиль | цитата
Gunnman, он позволяет писать дополнения на C/C++/Qt для пакета Windows.
карма: 1
1
Голосовали:flint2
Ответов: 2059
Рейтинг: 132
#5: 2015-05-01 02:25:15 ЛС | профиль | цитата
он позволяет писать дополнения
!!!
Если привести QT к виду пакета Windows, - цены-бы не`было.
Пакет QT, как он есть, похож на пакет FASM. Рывок одного человека, но "Огни в моей топке совсем не горят, В котлах не сдержать больше пару.". Да и с пакетом Windows не так всё гладко. Во всяком случае с деревьями и списками.
"Если бы губы Никанора Ивановича да приставить к носу Ивана Кузьмича..."
TData - тоже мина замедленного действия... - тормоз ещё тот ( в прямом и переносном).
карма: 6

0
Гость
Ответов: 17029
Рейтинг: 0
#6: 2015-05-01 10:14:52 правка | ЛС | профиль | цитата


Редактировалось 5 раз(а), последний 2021-06-22 15:05:32
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#7: 2015-05-01 10:17:00 правка | ЛС | профиль | цитата


Редактировалось 5 раз(а), последний 2021-06-22 15:05:32
карма: 0

0
Ответов: 2059
Рейтинг: 132
#8: 2015-05-01 12:55:48 ЛС | профиль | цитата
Он же частично интегрировал QT c Форт SPF4

Это старая разработка.
Очень не удобно из SPF4 работать с формами, будь то QT, или что то другое.
Я уже выкладывал SPF4 для пакета Windows http://forum.hiasm.com/forum_serv.php?q=56&id=3939
Это пробный вариант, сделал за 1,5 - 2 часа. Можно довести до ума.
Делал транслятор из SPF4 в ассемблерный код для delphi. С объявлением процедур и функций, переменных и т.д. + есть программка для создания полноценных dll из форт-программ, не так как сделано в SPF4. Сделана в Hiasm, так что можно переделать в соответствии со своими хотелками.
Если будет интерес, - могу выложить.
карма: 6

0
Гость
Ответов: 17029
Рейтинг: 0
#9: 2015-05-01 13:47:29 правка | ЛС | профиль | цитата


Редактировалось 5 раз(а), последний 2021-06-22 14:50:53
карма: 0

0
Ответов: 2059
Рейтинг: 132
#10: 2015-05-01 14:10:24 ЛС | профиль | цитата
Я FPC ни разу не использовал, по этому не предполагал его использования под этот компилятор.
Потом посмотрю в чём дело.
Для того чтобы выложить, надо привести всё в божеский вид. Попробую сегодня сделать.
[offtop]Друзья вчера приходили. По этому надо для начала пивком поправиться.[/offtop]
карма: 6

0
Ответов: 1841
Рейтинг: 369
#11: 2015-05-01 17:17:34 ЛС | профиль | цитата
flint2 писал(а):
Если привести QT к виду пакета Windows, - цены-бы не`было.

Не вижу смысла более создавать новые пакеты или улучшать текущие под версии HiAsm 4/5.
г. ном писал(а):
Возможно для "развёртывания" темы будет полезна информация наличия проекта интеграции QT в язык D (автор mgw на русском Форт форуме)

Единственные актуальные биндинги для C++ (основной проект) и Python (PyQt).
В остальном, смысла также не вижу, ибо, архитектура/документация Qt создавалась с учётом особенностей C++ и лучше уже точно ничего не получится
Ну, только если проект чисто "для себя" или очень не хочется пилить проект на C++ .
------------ Дoбавленo в 17.17:
Этот "компонент" был создал лишь для того, чтобы продемонстрировать те малые возможности, которые мы уже не увидим в текущем варианте развития HiAsm, даже с учётом всех приложенных усилий активных форумчан.
Очень много ошибок в общих архитектурных решениях имеем мы, которые не позволят поднять среду до необходимого уровня.
карма: 1
0
Ответов: 2059
Рейтинг: 132
#12: 2015-05-01 18:43:30 ЛС | профиль | цитата
Добавить нечего.
P.S.
Вот перенёс тему, чтобы тут не мусорить.
http://forum.hiasm.com/forum.html?q=3&p=277359
карма: 6

0
12
Сообщение
...
Прикрепленные файлы
(файлы не залиты)