Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Работа с плагинами
VitaminPSG
сообщение 29.3.2013, 16:59
Сообщение #1


*

Registred
Сообщений: 4
Регистрация: 26.3.2013
Группа: Пользователи
Наличность: 0
Пользователь №: 15.931
Возраст: 25



Добрый день, помогите разобраться в работе плагина
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): =======================================
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Warstone
сообщение 29.3.2013, 21:37
Сообщение #2


*********

Группа: Модераторы
Наличность: 0
Пользователь №: 10.905
Возраст: 25



Цитата
3) Можно ли объяснить по коду плагина
А ты почитай в чем различие между AnsiChar и WideChar. Если сделаешь [2] - будет как ты хочешь.
Это, кстати, относится ко всем вопросам.


--------------------
Do. Or do not. There is no Try!
© Master Joda, Dagobah, Star Wars: Episode V.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 27.4.2024, 16:15
Designed by Nickostyle