Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.07.2023, 19:11   #1
arktik
Пользователь
 
Регистрация: 30.07.2022
Сообщений: 12
По умолчанию TCart

Всем, доброго дня!
Работаю с компонентой TCart. Строится график A.Series.AddXY(X,Y), вернее несколько графиков. Все хорошо и здорово. Графики строятся непрерывно, т.е. отображают принимаемую информацию в графическом виде. Но через два часа работы вылетает OutOfMemory. Можно ли это как-то исправить или что-то сделать что бы память не переполнялась?
arktik вне форума Ответить с цитированием
Старый 19.07.2023, 08:45   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
т.е. отображают принимаемую информацию
вы уверены что прием осуществляется БЕЗ утечек памяти?
т.е. во всем виноват TCart.

Цитата:
Можно ли это как-то исправить или что-то сделать что бы память не переполнялась?
P.S. накопление информации обычно подразумевает динамическое выделение памяти с увеличением.
а выделение памяти с нарастанием ведет к фрагментации.
а фрагментация ведет к иcчерпанию(out of memory).

лекарство одно. выделять память заранее и с запасом.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 19.07.2023 в 08:58.
evg_m на форуме Ответить с цитированием
Старый 19.07.2023, 10:16   #3
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 736
По умолчанию

Сколько чисел в серии(точек)? Сколько всего точек на графиках?

Последний раз редактировалось Cuprum5; 19.07.2023 в 17:19.
Cuprum5 на форуме Ответить с цитированием
Старый 19.07.2023, 19:06   #4
arktik
Пользователь
 
Регистрация: 30.07.2022
Сообщений: 12
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
вы уверены что прием осуществляется БЕЗ утечек памяти?
т.е. во всем виноват TCart.


P.S. накопление информации обычно подразумевает динамическое выделение памяти с увеличением.
а выделение памяти с нарастанием ведет к фрагментации.
а фрагментация ведет к иcчерпанию(out of memory).

лекарство одно. выделять память заранее и с запасом.
Вечер добрый!
Почему я грешу на TCart. В программе я закомментировал AddXY(X,Y). Все тело программы работает, прием данных, обработка, накопление информации и вывод на нижнюю ось графика точки времени приема. То есть TCart движется, но без прорисовки линий. Работает все без остановки, без ошибок и глюков Про утечку памяти и фрагментацию я думал. Потому и забил AddXY(X,Y) и запустил программу на исполнение, справедливо думая, что если утечка идет, то она проявися и без построения графика.
arktik вне форума Ответить с цитированием
Старый 20.07.2023, 19:22   #5
arktik
Пользователь
 
Регистрация: 30.07.2022
Сообщений: 12
По умолчанию

Значит так. TCart у меня накапливал при рисовании графиков точки в серии. Это давало возможность пролистать график назад для просмотра при остановке. Вставил после Series.AddXY(X,Y) следующее:

if Series1.Count>N then
Series1.Delete(0);

То есть после определенной прорисовки графика начинаю удалять точки в начале серии. И ни какого переполнения памяти. Правда листать график назад не получится, но не беда. Все значения сохраняются в файле. можно нарисовать график из файла и проанализировать его.
Спасибо за участие.
arktik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь c компонентом TCart Alar Компоненты Delphi 0 30.10.2006 00:36