powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Fastreport out of memory
23 сообщений из 23, страница 1 из 1
Fastreport out of memory
    #39094459
khrysh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Может кто подсказать:
Delphi XE3
Fastreport 4.14
По кнопке открываю отчет таким вот образом:

Код: pascal
1.
2.
3.
frxReport1.LoadFromFile('C:\fr3\1.fr3',true);
frxReport1.PrepareReport(true);
frxReport1.ShowPreparedReport;



В самом отчете простейший select из БД (Firebird 2.5), без параметров.
Если отчет много раз открыть-закрыть, то в один прекрасный момент программа вылетает в out of memory (конечно есть отчеты разные, большие и маленькие, кто-то вылетает раньше, кто-то позже).
Каким образом заставить отдавать память при закрытии отчета? Или не потреблять ее при повторном его открытии?
М.б. какое-то свойство? Испробованы все обычные close, clear, stopreport и т.п.
Попытки создавать динамически frxReport, оборачивать в try/finally и в finally делать ему Free не дают результата.
Наверное дело в запросе к БД, т.к. если открывать таким же образом отчет со статическим текстом, то память при закрытии отчет отдает обратно.

Такое ощущение, что упускаю что-то простейшее, иначе проблема была бы массовой, а я не нахожу ничего в инете по теме.
Простите за тупость, натолкните на мысль, пожалуйста!!

сам отчет
Код: pascal
1.
2.
MDIChild=false
Modal=true  
...
Рейтинг: 0 / 0
Fastreport out of memory
    #39094466
asviridenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
khrysh,

А что говорит поддержка FR?
...
Рейтинг: 0 / 0
Fastreport out of memory
    #39094476
khrysh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asviridenkov,

пока до них дело не дошло
до этого момента здесь находились ответы на все возникающие вопросы
тем более есть ощущение что это я туплю в чем-то
ну а так-то придется, конечно, туда писать, если вопрос решить не получится
...
Рейтинг: 0 / 0
Fastreport out of memory
    #39094480
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Может быть, дело в компонентах доступа к БД.
Какие компоненты используешь ?
А ты попробовал закрывать запрос вместе с уничтожением отчёта ?
...
Рейтинг: 0 / 0
Fastreport out of memory
    #39094490
khrysh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
defecator,

в отчете IBXQuery,
у него же в свойствах стоит CloseDataSource=true
а из самой делфи при закрытии отчета не закрываю запрос (по правде потому что первый раз слышу что так можно, сча погуглю)
...
Рейтинг: 0 / 0
Fastreport out of memory
    #39094507
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищем утечки памяти .

Если делфи выше 7, то можно в любом месте программы написать "ReportMemoryLeaksOnShutdown := True;" и при закрытии увидеть отчет об утечках.
...
Рейтинг: 0 / 0
Fastreport out of memory
    #39094510
mvb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
khrysh,

FastMM4 + {$define FullDebugMode} + {$define EnableMemoryLeakReporting}

покажет утечку, дальше дело техники..
...
Рейтинг: 0 / 0
Fastreport out of memory
    #39094520
khrysh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
закрытие запроса таким вот образом, к сожалению, результата не дало:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
try
   frxReport1.LoadFromFile('C:\fr3\1.fr3',true);
   frxReport1.PrepareReport(true);
   frxReport1.ShowPreparedReport;
finally
    begin
      t := Tfrxibxquery(frxReport1.FindObject('IBXQuery1'));
      if t <> nil then
        Tfrxibxquery(t).Close;
    end;
end;


утечки, действительно, есть.
при чем, если отчет не вызывать, то программа закрывается без утечек, а если вызвать - то они есть.
за ссылку спасибо, буду разбираться
...
Рейтинг: 0 / 0
Fastreport out of memory
    #39094549
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
khrysh,
разговоры в пользу бедных.

В отчете запросто могут быть созданы объекты, требующие явной деинициализации. Например, в скрипте.

Кроме того, для отчета ты, скорее всего, создаешь набор данных, который, возможно, остается открытым. При повторном вызове процедуры ты снова создаешь набор данных. Вот память и заканчивается.
И т.п.

Короче, хочешь помощи - предоставь проект, воспроизводящий проблему.

PS: Для поиска утечек памяти можно воспользоваться FastMM4 . Но он не поможет, если созданные объекты подчищаются при закрытии приложения.

PPS: для поиска утечек лучше пользоваться бо'лее специальными инструментами, чем FasmMM4. Например, если у тебя Delphi >= XE, то попробовать изпользоваться библиотекой https://bitbucket.org/shadow_cs/delphi-leakcheck/src
Например, вот так: 18326237
...
Рейтинг: 0 / 0
Fastreport out of memory
    #39094596
khrysh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
лог fastMM выдает вот такие данные
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
This block was allocated by thread 0x8B0, and the stack trace (return addresses) at the time was:
40699D [System.pas][System][@ReallocMem$qqrrpvi][4395]
806B36 [IB.pas][IB][IBAlloc$qqrrpucii][359]
7E10C1 [IBCustomDataSet.pas][IBCustomDataSet][TIBCustomDataSet.AllocRecordBuffer$qqrv][2471]
7E2F03 [IBCustomDataSet.pas][IBCustomDataSet][TIBCustomDataSet.InternalOpen$qqrv][3386]
824B45 [IBQuery.pas][IBQuery][TIBQuery.InternalOpen$qqrv][152]
6774CB [Data.DB.pas][Data.DB][Db.TDataSet.DoInternalOpen$qqrv][12161]
677583 [Data.DB.pas][Data.DB][Db.TDataSet.OpenCursor$qqro][12190]
67743F [Data.DB.pas][Data.DB][Db.TDataSet.SetActive$qqro][12143]
7E44FC [IBCustomDataSet.pas][IBCustomDataSet][TIBCustomDataSet.SetActive$qqro][4149]
67727B [Data.DB.pas][Data.DB][Db.TDataSet.Open$qqrv][12099]
9743E8 [frxDBSet.pas][frxDBSet][TfrxDBDataset.Open$qqrv][177]

The block is currently used for an object of class: Unknown

The allocation number is: 196179

Current memory dump of 256 bytes starting at pointer address 7EE99530:
00 00 04 00 FF FF FF FF 00 00 00 00 FF FF FF FF 00 00 00 00 00 00 00 00 08 02 34 00 01 01 00 00
08 00 00 00 00 00 00 00 78 00 00 00 01 00 00 00 F4 01 00 00 01 01 00 00 04 00 00 00 00 00 00 00
80 00 00 00 01 00 00 00 C4 01 00 00 01 01 00 00 3E 00 00 00 00 00 00 00 84 00 00 00 01 00 00 00
C4 01 00 00 01 01 00 00 3E 00 00 00 00 00 00 00 C2 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
.  .  .  .  я  я  я  я  .  .  .  .  я  я  я  я  .  .  .  .  .  .  .  .  .  .  4  .  .  .  .  .
.  .  .  .  .  .  .  .  x  .  .  .  .  .  .  .  ф  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
Ђ  .  .  .  .  .  .  .  Д  .  .  .  .  .  .  .  >  .  .  .  .  .  .  .  „  .  .  .  .  .  .  .
Д  .  .  .  .  .  .  .  >  .  .  .  .  .  .  .  В  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
.  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
.  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
.  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
.  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .



т.е. вроде как действительно проблема в датасете
вопрос в том, как это починить, как закрыть этот набор данных?
в самой проге только TIBDataBase (подключение к БД) и Транзакция, коммит транзакции и даже отключение коннекта от БД не помогает.
на форме frxIBXComponents1 (к которому подключена TIBDataBase) и сам отчет frxReport1.
В отчете Tfrxibxquery, в котором выбираются данные и выводятся в мемо (мемо несколько).
Могу скинуть тестовый проект, только как быть с коннектом к БД и таблицей?
Или может кто так подскажет, как такую утечку убрать
...
Рейтинг: 0 / 0
Fastreport out of memory
    #39094598
ZeroMQ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
khrysh...
Могу скинуть тестовый проект, только как быть с коннектом к БД и таблицей?
Или может кто так подскажет, как такую утечку убрать

Включи тестовую базу с нужными таблицами в той же директории, что и программа.
Чтобы после распаковки в любое место компилировалось и запускалось.
...
Рейтинг: 0 / 0
Fastreport out of memory
    #39094979
gpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поиграйтесь с TfrxIBXQuery.Query.UniDirectional
Если не поможет - создавайте и отсылайте тестовый проект на support@fast-report.com
...
Рейтинг: 0 / 0
Fastreport out of memory
    #39094993
Tactical Nuclear Penguin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
khryshDelphi XE3


Update для Delphi стоит?
В релизе у XE3 была утечка памяти в IBX
...
Рейтинг: 0 / 0
Fastreport out of memory
    #39095145
khrysh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Благодарю за все советы, собрала тестовый пример, вместе с исходниками и FASTMM.
http://ifolder.com.ua/rp0polj7hup5.html
Если кому не трудно, гляньте, пожалуйста)
Update для Delphi не стоит, посмотрю в эту сторону, спасибо
...
Рейтинг: 0 / 0
Fastreport out of memory
    #39095506
ZeroMQ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
khrysh,

Проект весом 19,12 Мб, и ждать 5 минут?
...
Рейтинг: 0 / 0
Fastreport out of memory
    #39095564
khrysh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ZeroMQ,

https://cloud.mail.ru/public/7HZx/YFHTCNUyM

убрала все лишнее, тут поменьше
...
Рейтинг: 0 / 0
Fastreport out of memory
    #39098786
khrysh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tactical Nuclear Penguin,

Действительно, дело в XE3 и утечке памяти в IBX, проверила в другой версии Delphi - все ок.
Всем спасибо огромное)
...
Рейтинг: 0 / 0
Fastreport out of memory
    #39098791
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
khryshTactical Nuclear Penguin,

Действительно, дело в XE3 и утечке памяти в IBX, проверила в другой версии Delphi - все ок.
Всем спасибо огромное)

я бы сократил до:
khryshдело в утечке памяти в IBX

Потому что IBX - это та ещё клоака )))
...
Рейтинг: 0 / 0
Fastreport out of memory
    #39098822
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorПотому что IBX - это та ещё клоака )))И почему у меня к ним нет никаких претензий?
...
Рейтинг: 0 / 0
Fastreport out of memory
    #39098823
ZeroMQ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorkhryshTactical Nuclear Penguin,

Действительно, дело в XE3 и утечке памяти в IBX, проверила в другой версии Delphi - все ок.
Всем спасибо огромное)

я бы сократил до:
khryshдело в утечке памяти в IBX

Потому что IBX - это та ещё клоака )))
Я до "переезда" на FIB+ использовал IBX. Ничего страшного не запомнилось. Правда, это еще при Delphi 6 было.
...
Рейтинг: 0 / 0
Fastreport out of memory
    #39098832
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_defecatorПотому что IBX - это та ещё клоака )))И почему у меня к ним нет никаких претензий?

Наверное потому, что ты умеешь их готовить?-)
...
Рейтинг: 0 / 0
Fastreport out of memory
    #39098843
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
khryshДействительно, дело в XE3 и утечке памяти в IBX, проверила в другой версии Delphi - все ок.

Что там такое сделали, что появились утечки?
Ibx простая, как топор, библиотека.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Fastreport out of memory
    #39511222
DoomGamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tactical Nuclear Penguin,
Где можно найти этот update? Может, есть прямая ссылка?
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Fastreport out of memory
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]