Страница 1 из 1
Внешняя функция
Добавлено:
21 мар 2016, 12:09
Владимир_Я
Хочу создать функцию типа
sub func(short source,short result)
result=source
end sub
В таком виде не работает. Как сделать подобную функцию?
Re: Внешняя функция
Добавлено:
21 мар 2016, 12:34
den_po
Что значит не работает?
При редактировании макроса функцию нужно разместить до тела макроса, сам макрос при этом удалять нельзя.
Если нужно глобальную функцию, то Инструменты/Макросы/Библиотека/Создать.
Re: Внешняя функция
Добавлено:
21 мар 2016, 12:44
Владимир_Я
Да, для примера создал функцию в библиотеке
sub Proverka(int a, int b)
b=a
end sub
и создал макрос
macro_command main()
int a,b
a=7
Proverka(a, b)
SetData(b, "Local HMI", LW, 0, 1)
end macro_command
после выполнения макроса LW0 не изменяется
Re: Внешняя функция
Добавлено:
21 мар 2016, 12:58
den_po
Используйте return
- Код: Выделить всё
sub unsigned int mylongswap(unsigned int param)
unsigned int result
SWAPB(param, result)
return result
end sub
macro_command main()
unsigned int a,b
a=0x1234
b=mylongswap(a)
SetData(b, "Local HMI", LW, 0, 1)
end macro_command
Re: Внешняя функция
Добавлено:
21 мар 2016, 13:07
Владимир_Я
С объявлением типа функции и return-ом это конечно работает. Но как сделать чтобы значение возвращалось в передаваемую переменную? Стандартные функции же сделаны так.
Например тот же SWAPB(param, result).
Свою функцию Proverka я просто привёл для примера. На самом деле хочу передавать в функцию массив, модифицировать его в функции, и возвращать.
Re: Внешняя функция
Добавлено:
22 мар 2016, 11:31
den_po
Пользовательским функциям нельзя передавать массивы в аргументах
Re: Внешняя функция
Добавлено:
22 мар 2016, 11:55
Владимир_Я
Обидно. Почему то в памяти моей отразилось, что можно. Придётся циклом закидывать.