Всем привет. Столкнулся с задачкой, чтобы вывести значения работы двигателя. Необходимо показывать значения за последние 30 секунд. На ум пришло решение положить TChart на форму и по таймеру с интервалом в 1 секунду добавлять значения в график.
В таймере выполняю код:
Chart1.Series[0].AddXY(now,random(100));
Chart1.Series[1].AddXY(now,random(50));
Chart1.Series[2].AddXY(now,random(120));
Chart1.Series[3].AddXY(now,random(75));
Chart1.Series[4].AddXY(now,random(102));
Chart1.Series[5].AddXY(now,random(100));
Chart1.Series[6].AddXY(now,random(250));
if Chart1.Series[0].XValues.Count > 30 then
begin
Chart1.BottomAxis.Maximum := Chart1.Series[0].MaxXValue + Sec;
Chart1.BottomAxis.Minimum := Chart1.BottomAxis.Minimum + Sec;
Chart1.Series[0].XValues.Delete(Chart1.Series[0].XValues.Count-31);
Chart1.Series[0].YValues.Delete(Chart1.Series[0].YValues.Count-31);
Chart1.Series[1].XValues.Delete(Chart1.Series[1].XValues.Count-31);
Chart1.Series[1].YValues.Delete(Chart1.Series[1].YValues.Count-31);
Chart1.Series[2].XValues.Delete(Chart1.Series[2].XValues.Count-31);
Chart1.Series[2].YValues.Delete(Chart1.Series[2].YValues.Count-31);
Chart1.Series[3].XValues.Delete(Chart1.Series[3].XValues.Count-31);
Chart1.Series[3].YValues.Delete(Chart1.Series[3].YValues.Count-31);
Chart1.Series[4].XValues.Delete(Chart1.Series[4].XValues.Count-31);
Chart1.Series[4].YValues.Delete(Chart1.Series[4].YValues.Count-31);
Chart1.Series[5].XValues.Delete(Chart1.Series[5].XValues.Count-31);
Chart1.Series[5].YValues.Delete(Chart1.Series[5].YValues.Count-31);
Chart1.Series[6].XValues.Delete(Chart1.Series[6].XValues.Count-31);
Chart1.Series[6].YValues.Delete(Chart1.Series[6].YValues.Count-31);
end;
Где
Sec = 1 / (24 * 60 * 60);
Вроде бы все даже и работает. Но заметил одну не очень хорошую особенность (собственно почему и решил удалять значения в таймере). В менеджере процессов приложение понемножечку растет в оперативной памяти. Если отключаю таймер - все замерает на месте. За минут 5 набирается примерно 500 КБ.. вроде бы и не так много, но что-то необходимо делать. Посоветуйте, что поправить? Использую Delphi XE6 Fire Monkey. Опыта в программирование не так много, но ответа на других форумах так и не получил.