![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 30.07.2022
Сообщений: 12
|
![]()
Всем, доброго дня!
Работаю с компонентой TCart. Строится график A.Series.AddXY(X,Y), вернее несколько графиков. Все хорошо и здорово. Графики строятся непрерывно, т.е. отображают принимаемую информацию в графическом виде. Но через два часа работы вылетает OutOfMemory. Можно ли это как-то исправить или что-то сделать что бы память не переполнялась? |
![]() |
![]() |
![]() |
#2 | ||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
![]() Цитата:
т.е. во всем виноват TCart. Цитата:
а выделение памяти с нарастанием ведет к фрагментации. а фрагментация ведет к иcчерпанию(out of memory). лекарство одно. выделять память заранее и с запасом.
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 19.07.2023 в 08:58. |
||
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 09.05.2017
Сообщений: 749
|
![]()
Сколько чисел в серии(точек)? Сколько всего точек на графиках?
Последний раз редактировалось Cuprum5; 19.07.2023 в 17:19. |
![]() |
![]() |
![]() |
#4 | |
Пользователь
Регистрация: 30.07.2022
Сообщений: 12
|
![]() Цитата:
Почему я грешу на TCart. В программе я закомментировал AddXY(X,Y). Все тело программы работает, прием данных, обработка, накопление информации и вывод на нижнюю ось графика точки времени приема. То есть TCart движется, но без прорисовки линий. Работает все без остановки, без ошибок и глюков Про утечку памяти и фрагментацию я думал. Потому и забил AddXY(X,Y) и запустил программу на исполнение, справедливо думая, что если утечка идет, то она проявися и без построения графика. |
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 30.07.2022
Сообщений: 12
|
![]()
Значит так. TCart у меня накапливал при рисовании графиков точки в серии. Это давало возможность пролистать график назад для просмотра при остановке. Вставил после Series.AddXY(X,Y) следующее:
if Series1.Count>N then Series1.Delete(0); То есть после определенной прорисовки графика начинаю удалять точки в начале серии. И ни какого переполнения памяти. Правда листать график назад не получится, но не беда. Все значения сохраняются в файле. можно нарисовать график из файла и проанализировать его. Спасибо за участие. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нужна помощь c компонентом TCart | Alar | Компоненты Delphi | 0 | 30.10.2006 00:36 |