Идея заключалась в том, чтобы использовать элемент класса 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)
Тут собственно, мы и будем писать наш код
В заголовке объявлено всего 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.