Данные с формы в переменную (FR3.21, Builder 6)

отредактировано 18:27 Раздел: FastReport 3.0
При передаче данных с формы (ListBox) в переменную в обработчике кнопки в следущем виде:

Set ("SomeVar", m_pSomeList.Items[m_pSomeList.ItemIndex]);

на форме отчета вываливается ошибка.


"The following error(s) have occured:
Memo17: Error in expression 'ООО "ЧТО-ТО"': ';' expected"


Что это и как это побороть?

Комментарии

  • gpigpi
    отредактировано 18:27
    Есть подозрение, что виноваты в этом кавычки 'ООО "ЧТО-ТО"'
    Попробуйте использовать скриптовые переменные. При их использовании проблем со строковыми значениями не возникает
  • отредактировано 18:27
    Если передавать значение в String, потом - в Memo1.Memo.Text, то все нормально.
    Но в моей задаче это очень неудобно.

    Возможно ли организовать данную операцию через Variables или что-либо подобное?
  • gpigpi
    отредактировано 18:27
    Используйте frxReport1.Script.Variables
  • отредактировано 18:27
    А где онные переменные надо объявлять?
    И какова область их видимости?
  • gpigpi
    отредактировано 18:27
    При использовании frxReport1.Script.Variables их даже объявлять не нужно.
    Переменные глобальные для скрипта
  • отредактировано 18:27
    Проблема была в кавычках!
    В скриптовых переменных String все работает нормально, но при попытке передачи в Variables вылезала таже ошибка.

    Кому интересно:
    Для того, чтобы передать строковую скриптовую переменную (вида: ООО "Что-то" ) в Variables надо ее добить кавычками вначале и в конце и заменить внутренние кавычки на \" - (слеш+двойная кавычка) для C++Script и '' (две одинарных кавычки) для PascalScript.

    Код функции, которая это выполняет (C++Script)
    String ReplaceQuote (String sText)
    {
      String sRes = "";
      for (int i = 1; i <= Length(sText); i++)
      {
        if (sText[i] == "\"")
          sRes = sRes + "\\\"";
        else
          sRes = sRes + sText[i];
      }
      return ("\"" + sRes + "\"");
    }
    

    Получится строка "ООО \"Что-то\"", ее можно свободно передавать в Veriables!

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

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