Переменные из списка
1. В коде Дельфи перед запуском отчета объявляю переменную и
присваиваю ей значение
frxReport1.Variables := '''yes''';
Далее в программе запускается дизайнер отчета - в списке переменных TestVar есть и значение у неё как положено - 'yes'
2. В скрипте отчета надо изменить значение TestVar
используя - Set(<TestVar>, '''no''');
Далее в скрипте пишем
ShowMessage(VarToStr(<TestVar>) + ' = ' + VarToStr(Get(<TestVar>)));
При выполнении скрипта видим в диалоге
yes = no
Если далее в скрипте требуется анализировать значение TestVar, то
при использовании выражения типа IF <TestVar> = 'yes' then
для вычисления будет использоваться значение, установленное в коде дельфи (if вернет истину), а если напишем IF Get(<TestVar>) = 'yes' then
будет использовано значение, присвоенное в скрипте и IF вернет ложь.
Если запросить значение Get(<TestVar>) ДО присвоения значения ф-цией
Set(), то получим null (и далее сообщение о неопознанном поле или переменной...).
Получается, что функции Set() и Get() работают со своими экземплярами переменных..., что совершенно не соотвествует документации.
Вопрос - как в скрипте правильно и гарантированно менять значения
списочных переменных. Или вообще их лучше не трогать...
присваиваю ей значение
frxReport1.Variables := '''yes''';
Далее в программе запускается дизайнер отчета - в списке переменных TestVar есть и значение у неё как положено - 'yes'
2. В скрипте отчета надо изменить значение TestVar
используя - Set(<TestVar>, '''no''');
Далее в скрипте пишем
ShowMessage(VarToStr(<TestVar>) + ' = ' + VarToStr(Get(<TestVar>)));
При выполнении скрипта видим в диалоге
yes = no
Если далее в скрипте требуется анализировать значение TestVar, то
при использовании выражения типа IF <TestVar> = 'yes' then
для вычисления будет использоваться значение, установленное в коде дельфи (if вернет истину), а если напишем IF Get(<TestVar>) = 'yes' then
будет использовано значение, присвоенное в скрипте и IF вернет ложь.
Если запросить значение Get(<TestVar>) ДО присвоения значения ф-цией
Set(), то получим null (и далее сообщение о неопознанном поле или переменной...).
Получается, что функции Set() и Get() работают со своими экземплярами переменных..., что совершенно не соотвествует документации.
Вопрос - как в скрипте правильно и гарантированно менять значения
списочных переменных. Или вообще их лучше не трогать...
Комментарии
Set(<TestVar>, '''no''');
то в качестве имени будет передано значение переменной. Правильно так:
Set('TestVar', '''no''');
Затмение нашло... самое настоящее... ведь в упор не видел кавычек в доке..
Выходит я создавал новую переменную с именем значения существующей.
)