Вверх ↑
Этот топик читают: Гость
Администрация
Ответов: 15294
Рейтинг: 1518
#61: 2017-06-04 22:37:52 ЛС | профиль | цитата
Собрал с включением всех зависимостей в dll, на голой винде в HiAsm4 работает нормально.
карма: 26
1
файлы: 1CodeGen.rar [240KB] [597]
Голосовали:brown-aleks
Ответов: 54
Рейтинг: 1
#62: 2017-06-04 22:43:11 ЛС | профиль | цитата
Dilma писал(а):
Собрал с включением всех зависимостей в dll, на голой винде в HiAsm4 работает нормально.


УРРРААА!!! Работает! Дайте я вас расцелую!!!
карма: 0

0
Администрация
Ответов: 15294
Рейтинг: 1518
#63: 2017-06-05 15:05:41 ЛС | профиль | цитата
Будут еще вопросы, обращайтесь
карма: 26
0
Ответов: 54
Рейтинг: 1
#64: 2017-06-11 23:31:04 ЛС | профиль | цитата
Конечно будут... Но только я надеюсь вопросы будут не посредственно только по языку RTCG.

И вот первый вопрос: Каким образом можно объявить переменную, границы видимости которой является элемент? И даже если на рабочем поле присутствуют два одинаковых элемента в которых объявлена одна и та же переменная, что бы они работали каждая сама по себе внутри своего элемента не зависимо друг от друга и были доступны во всех функциях своего элемента. Как например var(<name>[,<name>,...]) в FTCG. А то на сколько я понимаю в RTCG есть только fvar(<name>[,<name>,...]) и gvar(<name>[,<name>,...])

А gvar(<name>[,<name>,...]), в каком бы месте ни был объявлен, так и вовсе становится виден изо всех мест, ещё до инициализации элементов func Init(). Не знаю по каким мотивам так было сделано, возможно я ещё много не до понимаю. Но это не совсем удобно. И теряется смысл isset(<name>)
карма: 0

0
Администрация
Ответов: 15294
Рейтинг: 1518
#65: 2017-06-12 12:40:22 ЛС | профиль | цитата
brown-aleks, я советую все таки ознакомится с документацией хотя бы бегло RTCG

Элемент
element setfield(<name>, <exp>)
Создает новое поле элемента и устанавливает его значение


После создания поле доступно как this.<name> из кода элемента или element.<name> из любого другого места.

this.setfield("test", 33)
trace(this.test)
карма: 26
0
Ответов: 54
Рейтинг: 1
#66: 2017-06-12 18:04:24 ЛС | профиль | цитата
Dilma писал(а):
я советую все таки ознакомится с документацией хотя бы бегло RTCG


Верите или нет... но у меня в браузере практически все страницы документации RTGC открыты постоянно, и я их перебираю тщательно и не прерывно. Да setfield(<name>, <exp>) тоже пробовал. Почему то не получилось. Возможно я его как-то не правильно записывал. Поэтому решил, что легче спросить... Сейчас попробую ещё раз.
карма: 0

0
Ответов: 54
Рейтинг: 1
#67: 2017-06-24 15:06:30 ЛС | профиль | цитата
Да... конечно увидел синтаксически правильный пример записи кода и всё получилось. На мой взгляд, было бы не плохо в справочнике под каждым определением прописать подобные примерчики. И глупых вопросов было бы гораздо меньше. И ещё очень хотелось увидеть продолжение лекций пакета Lazarus. Чтобы набраться опыта как конструктивно в коде решаются те или иные задачи при помощи RTCG.

Столкнулся вот с таким вопросом... Каким образом можно сделать? К данным пришедшим на точку типа Work нужно добавить данные с точки типа Data и отправить картежем в точку типа Event. Эту страничку element внимательно изучил.

мои эксперименты... https://github.com/brown-aleks/RTGC_pack/blob/master/RTCG_pack/code/hiRTCG_DoData.hws

На все мои попытки получаю вот такое сообщение.





Ещё было бы конечно не плохо, если бы код-генератор вместо этого сообщения показывал конкретное место в моём коде, где я допускаю ошибку.

Редактировалось 4 раз(а), последний 2017-06-24 17:55:28
карма: 0

0
Администрация
Ответов: 15294
Рейтинг: 1518
#68: 2017-06-26 20:49:17 ЛС | профиль | цитата
brown-aleks писал(а):
К данным пришедшим на точку типа Work нужно добавить данные с точки типа Data и отправить картежем в точку типа Event.

Эта логика не совсем соответствует архитектуре HiAsm элементов. Тем не менее в примере сделано верно. Не совсем понятно, что имеется ввиду под "отправить картежем"?


if(linked("Data") == 1 or isndef("Data") == 0)

Проверять подключение точки нужно просто

if(linked("Data"))
// ...
end

isndef("Data") - не совсем понятно, что имелось ввиду этой конструкцией (isndef - такой ф-ции в RTCG просто нет) - если это проверка пришли ли данные по точке или нет, то правильнее делать все таки так:

dt = d("Data")
if(not isnull(dt))
// ....
end
карма: 26
0
Ответов: 54
Рейтинг: 1
#69: 2017-07-08 06:29:37 ЛС | профиль | цитата
Dilma писал(а):
...


Ваши замечания учёл... хоть и немного замысловато получилось но работает как нужно.

Поделитесь секретом пожалуйста. В элементе класса Hub каким образом можно взять значения пришедшие на точку типа Work? С учётом того, что этих точек может быть более чем одна...

https://github.com/brown-aleks/RTGC_pack/blob/master/RTCG_pack/code/hiHub.hws

Такое впечатление, что кроме Dilma, больше ни кто RTCG не владеет...?

Редактировалось 2 раз(а), последний 2017-07-09 19:32:11
карма: 0

0
Администрация
Ответов: 15294
Рейтинг: 1518
#70: 2017-07-13 01:27:07 ЛС | профиль | цитата
brown-aleks писал(а):
В элементе класса Hub каким образом можно взять значения пришедшие на точку типа Work?

С Work точек нельзя брать данные. Для каждого элемента с динамическими Work точками нужно определять метод:
func doEvent(index, data)

end
где index - это индекс точки (от 0 до N-1), а data это данные переданные в потоке. Для каждой подключенной work точки будет вызван метод doEvent. Для большинства языков в этом месте логично использовать функцию в коде целевого языка и прописывать её на каждый вызов doEvent с передачей в качестве аргумента данных из поля data.

Редактировалось 1 раз(а), последний 2017-07-13 01:27:18
карма: 26
0
Ответов: 1
Рейтинг: 0
#71: 2020-10-09 20:31:42 ЛС | профиль | цитата
aleks, у вас были какие-то успехи или проект застопорился?
карма: 0

0
71
Сообщение
...
Прикрепленные файлы
(файлы не залиты)