Проблемы корректного освобождение Tfrxreport
Delphist
Россия - Воронеж
Добрый день.
Есть 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 в разных окнах?
Есть 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 в разных окнах?
Комментарии
Скорее всего, проблема в том, где и как освобождается, какие функции используются. Пришлите образец исходника, вызывающего ошибку.