Вверх ↑
Администрация
Ответов: 15295
Рейтинг: 1519
#1: 2007-06-28 01:13:29 ЛС | профиль | цитата
nesco, решено сделать данный пакет некоторым испытательным полигоном для отладки основной ф-ности FTCG применительно к типизированным языкам. Всвязи с этим на SVN закоммичена некоторая версия, которая в том или ином виде может притепревать достаточно значительные изменения. Поэтому следут умеренно надстраивать к ней элементы.

В последнюю версию FTCG внесены правки, благодаря которым стала возможно автоматическая конвертация типов из числа в строку для данных полученных из потока. Добавлены операторы:
expof(<expression>)

возвращает подтип для типа data_code.

lang(<var name>:<int|str|real, [<var name>:<int|str|real>])

объявляет так называемую переменную целевого языка. Эта переменная обладает следующими св-вами:
- её typeof() = data_code - т.е. скрипт видит её как переменную типа code
- её expof() = dataint|data_str|data_real в зависимости от указанного в объявление типа
- значение данной переменной устанавливается равным var_mask из direct.inc с заменой соответствующих полей.

обновив пакет с SVN можно посмотреть какой код дает вот такое включение:
Add(Message,3261178,287,154)
{
}
Add(For,1644231,231,154)
{
End=5
link(onEvent,3261178:doMessage,[])
}
...
  for i4 := 0 to 5 do
  begin
MessageBox(frm2.Handle, PChar(int2str(i4)), PChar('hiasm msg'), MB_OK);
end;

т.е. CG сам заменил параметр Text компонента Message на int2str(Text). В дальнейшем такая замена будет производиться для всех типов, а так же и для данных, считанных через верхнюю точку. Для разработчика компонента эта фишка очевидно избавит от необходимости следить за типами вообще. исключение составляют ситуации, когда элемент понимает более одного типа входных данных(элемент Memory скажем)
карма: 27
0