Добрый день, помогите разобраться в работе плагина
1)
Как передать массив данных, к примеру чисел, пока нашел только один способ
Код
log =======================================
for #j 1 4 1
set %test[#j] #j
end_for
set %a Project2.Function1 (%test[1] %test[2] %test[3] %test[4] )
for #i 1 4 1
log [#i] %a[#i]
end_for
log =======================================
end_script
Код
16:28:48 0 (proc.txt, 0): =======================================
16:28:48 0 (proc.txt, 6): [1] 1 2 3 4
16:28:48 0 (proc.txt, 6): [2]
16:28:48 0 (proc.txt, 6): [3]
16:28:48 0 (proc.txt, 6): [4]
16:28:48 0 (proc.txt, 9): =======================================
2) Как получить значение массива, на выходе плагина. В истории программы написано следующее
Код
Плагин возвращает одну строку, длиной до 32кб.
символ с кодом '#00' является концом строки. комбинация символов с кодами '#0d0a' или '/n' являются управляющими, для увеличения первой размерности массива
(строк). символ с кодом '#09' является управляющим, для увеличения второй размерности массива (столбцов). т.е. возвращаемое плагином значение вида '1#092#093/n4#095#096', где '#09' означает символ с кодом 9, создаст массив 2х3 следующего содержания.
1 2 3
4 5 6
пример:
set $a myPlugin.function1 (много много параметров) // в строковой переменной $a будет всё что вернет плагин
set %a myPlugin.function1 (много много параметров) // возвращаемое плагином значение будет преобразовано в массив %a
пример исходного текста плагина лежит где-то рядом
Исходя из этого меняю код на следующий
Код
log =======================================
for #j 1 4 1
set %test[#j] #j
end_for
set %a Project2.Function1 (%test[1]/n%test[2]/n%test[3]/n%test[4]/ntest[5])
for #i 1 4 1
log [#i] %a[#i]
end_for
log =======================================
end_script
Лог
Код
16:39:29 0 (proc.txt, 0): =======================================
16:39:29 0 (proc.txt, 6): [1] 1
16:39:29 0 (proc.txt, 6): [2] 2
16:39:29 0 (proc.txt, 6): [3] 3
16:39:29 0 (proc.txt, 6): [4] 4
16:39:29 0 (proc.txt, 9): =======================================
Может ли пилот сам определять какой тип данных ему передали?3)
Можно ли объяснить по коду плагинаКод
CopyMemory (@ParamStruct^.Result[0], @s[1], length(s));
В описании delphi по команде CopyMemory , я понял следующее
из переменной
s скопировать данные в
Result, длинной
length(s)Т.к. Result у нас
array [0..32767] of char, а
s:=ParamStruct^.ParamString, т.е.
я копирую нашу строку в начало массива.
Но вот если я меняю
@ParamStruct^.Result[0] на @ParamStruct^.Result[1], я получаю следующее
Код
16:54:10 0 (proc.txt, 0): =======================================
16:54:10 0 (proc.txt, 6): [1]
16:54:10 0 (proc.txt, 6): [2]
16:54:10 0 (proc.txt, 6): [3]
16:54:10 0 (proc.txt, 6): [4]
16:54:10 0 (proc.txt, 8): =======================================
Хотя должно получиться, что то такое
Код
16:54:10 0 (proc.txt, 0): =======================================
16:54:10 0 (proc.txt, 6): [1]
16:54:10 0 (proc.txt, 6): [2] 1
16:54:10 0 (proc.txt, 6): [3] 2
16:54:10 0 (proc.txt, 6): [4] 3
16:54:10 0 (proc.txt, 8): =======================================