Exception при присвоении переменной значения

отредактировано April 2005 Раздел: FastReport 3.0
Здравствуйте.
В отчете имеется элемент TfrxMemoView. В нем текст "[REPORTNAME]" (без кавычек). REPORTNAME объявленая как переменная в категории "Пользовательские". При попытке присвоить переменной значение
написал:
frxReport.Variables := Title; // типа String
вылетает исключение:
написал:
Были обнаружены следующие ошибки:
Could not convert variant of type (Array Variant) into type (String)
Попробовал объявить Title как Variant, не помогло.
В чем может быть проблема?

Версия FR 3.11.

Комментарии

  • отредактировано 04:24
    Правильно так:
    frxReport.Variables := '''' + Title + '''';
  • отредактировано 04:24
    Забыл сказать, что ошибка вылетает при построении отчета:
    написал:
    procedure TReportForm.PrepareReport(Title: String);
    begin
    if Title <> '' then
        begin
        Title := StringReplace(Title, #13#10, '', [rfReplaceAll]);
        Title := StringReplace(Title, #13#10, '''#10''', [rfReplaceAll]);
        Title := ') + '''];';
        frxReport.Variables := '' + Title + ''; // здесь все OK даже без ''
        end;

    if not frxReport.PrepareReport then // а exception вылетает здесь!
        raise Exception.Create('Ошибка!');
        frxReport.ShowPreparedReport;
    end;
    Ошибка вылетает при вызове frxReport.PrepareReport. Если присвоение переменной закометировать, то отчет подготавливается без ошибок.

    При Exception - меня выбрасывает в frxClass (строка 4429):
    написал:
      try
        if CompareText(ExprStr, 'TOTALPAGES#') = 0 then
          FValue := '[TotalPages#]' else
          FValue := Report.Calc(ExprStr);
        if FHideZeros and (TVarData(FValue).VType <> varString) and
          (TVarData(FValue).VType <> varOleStr) and (FValue = 0) then
          Result := '' else
          Result := FormatData(FValue, Format); // <-- Вот здесь стоит указатель
      finally
        if Format <> nil then
          Format.Free;
      end;
    где ExprStr содержит "REPORTNAME", а вот переменная FValue принадлежит типу (Variant array of Variant), и при вызове метода FormatData вылетает Exception.
  • отредактировано 04:24
    Можно найти непосредственно объект Memo, и напарямую ему присвоить текст:
    написал:
            (frxReport.FindObject('TitleMemo') as TfrxMemoView).Text := Title;
    но хочется все таки сделать это через переменную... чтобы присвоив значение переменной - оно отобразилось в Memo.

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

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