Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года


plugin делфи e20-10

Вы не вошли.

 Поиск | Регистрация | Вход 

александр
09.01.2014 22:45:49
#1

Гость

plugin делфи e20-10

пытаюсь изменить стандартный пример плагина на делфи под себя, подскажите по синтаксису есть непонятки:

из кода 54 строка: LastPoints[I]:=data_Str^.data_to_plugin^[I];

вот на этом ресурсе синтаксис делфи по другому описывают http://www.delphi-manual.ru/pointers.php#4
при работе с массивами.

прокомментируйте пожалуйста.
ps
пишу плагин для lgraph для модуля e20-10  и датчика GT200 (от глобал тест) определения параметров акустической эмиссии.

Есть ли у вас еще примеры на делфи?
мне бы очень помог работающий пример главной функции обработки данных от АЦП, которая копировала бы данные со входа на выход (PluginDataExchange).

при попытках подключения примера плагина к программе выдает ошибку памяти.

Евгений
10.01.2014 10:17:52
#2

Гость

Re: plugin делфи e20-10

На LTR11 такая же ерунда. Пишет что для плагина памяти не хватает. Плюнул на си написал.

10.01.2014 13:21:04
#3

Сотрудник "Л Кард"
Здесь с 18.04.2014
Сообщений: 810

Re: plugin делфи e20-10

>вот на этом ресурсе синтаксис делфи по другому описывают

data_str имеет тип PPluginDataStr = ^PluginDataStr
data_str^.data_to_plugin имеет тип PData_Arr = ^Data_Arr = ^Array[0..Max_Points*32] of double
data_str^.data_to_plugin^ имеет тип Array[...] of double
data_str^.data_to_plugin^[i] - элемент этого массива.

В статье по ссылке я вижу другой пример - массив указателей.

Так что с синтаксисом, кажется, все нормально.

Другой вопрос, нет ли проблем с выравниванием памяти и правильно ли определен тип стркутуры в .pas - пример под Delphi неофициальный, это все-таки пример.

Может иметь смысл проверить соответствие описания типов в .pas и в include/plugin.h

Если дельфи новые, то замените все char на AnsiChar. В Дельфи по доброте душевной любят поменять размеры базовых типов данных в очередной версии.
(Те char, которые числовые по смыслу, лучше сделать Byte или ShortInt, а которые текстовые - AnsiChar.)

Наверное, стоит объявить структуры как packed record, потому что в .h #pragma pack(1) написано. Но реально там все поля кратные 4 байтам, поэтому при {$ALIGN 4} на практике должно быть одно и то же.

александр
11.01.2014 00:29:04
#4

Гость

Re: plugin делфи e20-10

можно попробовать и на СИ написать (с языком знаком по SCADA Trace Mode), но не знаю в какой среде писать. Если есть рабочие примеры и как что нажимать для компиляции, буду очень благодарен.

13.01.2014 13:35:57
#5

Сотрудник "Л Кард"
Здесь с 18.04.2014
Сообщений: 810

Re: plugin делфи e20-10

Ответил на почту. Ошибка из-за выравнивания, надо сделать везде в plugin.pas packed record.
На практике проявляется только при $A8, потому что все поля по размеру кратны 4.