|
|
|
Утечки памяти в компоненте xlReport при компиляции с помощью Delphi XE4
|
|||
|---|---|---|---|
|
#18+
Привет! Кто использует компоненты xlReport и Delphi XE4-XE7? Помогите с проблемой утечки памяти в компоненте xlReport при компиляции с помощью Delphi XE4 (32/64), при компиляции того же кода в D7 проблемы не возникает. У меня утекает память ~ 10% от объема данных. Удобно наблюдать в утилите procexp. Утечки наблюдал в : ProcExp , madExpert, FastMM4 - не видят утечек, AQTime 8 видит утечки, но номера строки не дает (демо и std) Память утекает в модуле xlEngine в этом цикле: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Если закомментарить строку в function TxlVarBuffer.CheckLimits: IRange.Value := Formulas; то утечка прекращается...почти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2014, 13:00 |
|
||
|
Утечки памяти в компоненте xlReport при компиляции с помощью Delphi XE4
|
|||
|---|---|---|---|
|
#18+
AsusManIRange.Value := Formulas;Осталось типы назвать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2014, 14:53 |
|
||
|
Утечки памяти в компоненте xlReport при компиляции с помощью Delphi XE4
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ОсталосьИ области видимости ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2014, 14:54 |
|
||
|
Утечки памяти в компоненте xlReport при компиляции с помощью Delphi XE4
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, 1. IRange: IxlRange; IxlRange = Excel8G2.Range; Тип OLEVariant, видимость локальная. 2. Formulas: OLEVariant; 3. TxlVarBuffer = class(TxlBuffer) private FBuff: OLEVariant; Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2014, 15:15 |
|
||
|
Утечки памяти в компоненте xlReport при компиляции с помощью Delphi XE4
|
|||
|---|---|---|---|
|
#18+
AsusMan, Решил проблему, тема закрыта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 19:23 |
|
||
|
Утечки памяти в компоненте xlReport при компиляции с помощью Delphi XE4
|
|||
|---|---|---|---|
|
#18+
AsusManРешил проблему, тема закрыта.Полностью одобряю подход. Пусть остальные тоже помучаются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 22:01 |
|
||
|
Утечки памяти в компоненте xlReport при компиляции с помощью Delphi XE4
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_AsusManРешил проблему, тема закрыта.Полностью одобряю подход. Пусть остальные тоже помучаются Если конкретно по утечке, заменил тип: Код: pascal 1. 2. 3. 4. 5. Не хотел писать, потому как не разобрался, почему регион, как интерфейс, не освобождает память, после ухода за пределы видимости, а Variant освободил. А так - компоненты мне нравятся, увеличил вариантный буфер с 256 до 2048 для скорости и переделал распределение памяти - VarArrayRedim(FBuff, RowCount); чтобы не вызывалось для каждой записи, т.е. сразу выделяю весь буфер. DDE и CSV - не использую, т.к. с Excel 2010 ведут себя нестабильно, особенно в виде сервиса и на серверных ОС, на ядре XP вообще ошибки пачками валяться - Error: System call failed Иногда на вариантном массиве Excel 2010 выдает такую ошибку, особенно если процессор занят другими процессами на 100%, на Excel 2003 такого не наблюдалось. Если кто знает как избавится от ошибок Error: System call failed - просьба откликнуться, как с ними бороться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 10:42 |
|
||
|
Утечки памяти в компоненте xlReport при компиляции с помощью Delphi XE4
|
|||
|---|---|---|---|
|
#18+
авторИногда на вариантном массиве Excel 2010 выдает такую ошибку, особенно если процессор занят другими процессами на 100%, на Excel 2003 такого не наблюдалось. Если кто знает как избавится от ошибок Error: System call failed - просьба откликнуться, как с ними бороться? Ошибся малость, после длительных испытаний пришел к выводу, что ошибка " System call failed " почти 100% начинается, когда система начинает активный страничный обмен. т.е. когда несколько активных процессов конкурируют за физическую память. Еще полезным бывает сделать паузу 1-2 секунды перед закрытием Excel или сохранением в файл. Все это касается не только данных компонент но и всех программ которые используют COM для работы с Excel 2007 / 2010. С Excel 2003 такая ошибка возникала крайне редко, хотя в нем было естественно ограничение на количество строк на листе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2014, 22:36 |
|
||
|
Утечки памяти в компоненте xlReport при компиляции с помощью Delphi XE4
|
|||
|---|---|---|---|
|
#18+
Может кому то еще надо: Если компоненты применяются в сервисе Windows и при использовании антивируса ESET возможна ошибка: System call failed Тогда в процедуре: procedure TxlExcelDataSource.PutRange; ...После VBACopyFormats(Self, FRows, FHeights, FDeleteSpecialRow, xrgoPreserveRowHeight in Options, xroHideExcel in Report.Options); ... надо поставить задержку в 2 секунды - sleep(2000); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2018, 17:04 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39663263&tid=2040724]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
92ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 246ms |
| total: | 445ms |

| 0 / 0 |
