Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Fastreport out of memory / 23 сообщений из 23, страница 1 из 1
04.11.2015, 16:09:40
    #39094459
khrysh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fastreport out of memory
Добрый день!

Может кто подсказать:
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
04.11.2015, 16:26:32
    #39094466
asviridenkov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fastreport out of memory
khrysh,

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

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

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

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

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

покажет утечку, дальше дело техники..
...
Рейтинг: 0 / 0
04.11.2015, 17:27:37
    #39094520
khrysh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fastreport out of memory
закрытие запроса таким вот образом, к сожалению, результата не дало:
Код: 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
04.11.2015, 17:59:09
    #39094549
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fastreport out of memory
khrysh,
разговоры в пользу бедных.

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

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

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

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

PPS: для поиска утечек лучше пользоваться бо'лее специальными инструментами, чем FasmMM4. Например, если у тебя Delphi >= XE, то попробовать изпользоваться библиотекой https://bitbucket.org/shadow_cs/delphi-leakcheck/src
Например, вот так: 18326237
...
Рейтинг: 0 / 0
04.11.2015, 19:10:29
    #39094596
khrysh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fastreport out of memory
лог 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
04.11.2015, 19:14:47
    #39094598
ZeroMQ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fastreport out of memory
khrysh...
Могу скинуть тестовый проект, только как быть с коннектом к БД и таблицей?
Или может кто так подскажет, как такую утечку убрать

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


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

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

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

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

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

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

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

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

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

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

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

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

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


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