Проблемы с многострочными текстовыми переменными

отредактировано 10:45 Раздел: FastReport 3.0
Возникла проблема.

При генерации отчета текстовой переменной присваивается многострочный текст.
Variables['TEST'                  ]:='''Строка1'#13'Строка2''';

При попытке отобразить ее в текстовом поле в виде [TEST], выдается ошибка: Expression Expected.

Во второй версии работало все как положено, а в третьей вадает вот такую вот ошибку. Причем если переменная содержит однострочный текст, то все работает нормально.

Может ктонибуть знает как можно это побороть?
Заранее благодарен.

Комментарии

  • отредактировано 10:45
    А такой вариант работает?

    Variables:='''Строка1'#13#10'Строка2''';
  • отредактировано 10:45
    Нет. Не работает, я тоже так до этого пробовал. Такое ощущение, что он пытается строчку записанную в переменную воспринимать как выражение. А в выражении разрыв строк недопустим.
    Дословно ошибка:
    memo1:
    Error in expression "строчка1
    строчка2": Expression expected.
  • отредактировано 10:45
    При варианте:
    '''строка1'''#13#10'''строка2'''

    Вообще выдает:
    Error in expression ''строчка1'
    'строчка2'': ';' expected. ;)
  • SlasherXSlasherX Россия, Магнитогорск
    отредактировано 10:45
    я делал так (из скрипта отчёта в обработчике OnBeforePrint)
    Memo1.Text := 'Строка 1' + #10 +'Строка 2' + #10 + ...
    

    Работает всё нормально.

    P.S. Попробуй убрать AllowExpressions у мемо, в которое выводишь данные, и текст присваивать в обработчике OnBeforePrint у Band'а
  • отредактировано 10:45
    Эта ситуация описана в документации programmer manual, работа с переменными, там же и рекомендации.
  • отредактировано 10:45
    Просмотрел руководство программиста:

    Только как пользоваться скриптовыми переменными?

    Пытаюсь так:
    Script.Variables:='строка1'#13#10'строка2';

    На событии OnBeforePrint:
    procedure MemobankrekvOnBeforePrint(Sender: TfrxComponent);
    begin
    memobankrekv.text:=ProvBR;
    end;

    Только вот почему то ничего не происходит, значение Memo не меняется.

    Что я делаю не так?


    P.S. To SlasherX: Мне необходимо передать многострочный текст именно из Delphi. При потытке сделать следующее:
    Memo1.Text :=<TEST> выдается таже самая ошибка.
  • SlasherXSlasherX Россия, Магнитогорск
    отредактировано March 2005
    ProgrammerManual, стр. 35 :
    написал:
    ...два важных ограничения при использовании такого метода:
    - в строке не должно быть одинарных кавычек. Все одинарные кавычки надо
    продублировать;
    - в строке не должно быть символов #13#10.


    Попробуй:

    memobankrekv.text := <ProvBR>;
  • отредактировано 10:45
    ;) Все разобрался, в последнем сообщении был мой косяк.
    Всем спасибо. Тема закрыта.

    Через скриптовые переменные действительно все работает.
    А memobankrekv.text := <ProvBR> либо
    memobankrekv.text := ProvBR особой разницы нет, работает и так, и так.

    То SlasherX - более полный вариант:
    написал:
    В этом случае значение переменной – строка 'test' – будет выведено без
    ошибок. Однако учтите два важных ограничения при использовании такого метода:
    - в строке не должно быть одинарных кавычек. Все одинарные кавычки надо
    продублировать;
    - в строке не должно быть символов #13#10.
    Учитывая вышесказанное, в некоторых случаях удобнее передавать
    значения переменных через скриптовые переменные.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.