Проблемы корректного освобождение Tfrxreport

DelphistDelphist Россия - Воронеж
отредактировано February 2014 Раздел: FastReport 4.0
Добрый день.
Есть MDI приложение. В MainForm'e и в одном из дочерних окон в FormCreate (по сути долгоживущие TfrxReport) динамически соответственно создаются frxReport1 := TfrxReport.Create(nil) (для глобальных отчетов) и frxReport2 := TfrxReport.Create(nil) (для отчетов дочернего окна).
Далее в дочернем окне ч/з соответствующее меню открываем отчет, используя наш экземпляр frxReport2, после чего закрываем отчет и дочернее окно, закрываем гл. окно и при освобождении frxReport1 в MainForm.OnDestroy возникает ошибка (обращения к адресу в памяти) внутри frxReport1.Destroy, при освобождении его внутреннего fsScript'a.

Если же сделать короткоживущий frxReport1 т.е. не в MainForm.FormCreate проводить инициализацию, а например при нажатии кнопки меню отчета (MaimForm.miReport.Action.Click) и после его закрытия сразу освобождать frxReport1.Free, то все работает нормально.

Скажите, это случайно не баг FastReport'a - т.е., например, нельзя создавать долгоживущие frxReport в разных окнах?

Комментарии

  • DelphistDelphist Россия - Воронеж
    отредактировано 00:14
    up
  • отредактировано 00:14
    Если поместить на форму TfrxReport, то ведь не возникает ошибки при закрытии приложения? Значит, не баг.
    Скорее всего, проблема в том, где и как освобождается, какие функции используются. Пришлите образец исходника, вызывающего ошибку.

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

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