TChart: Access Violation после добавления точки в пустой график

Ответить
Аватара пользователя
blackstrip
Админ
Сообщения: 1176
Зарегистрирован: Ср янв 02, 2008 1:42 pm
Откуда: Подольск
Контактная информация:

TChart: Access Violation после добавления точки в пустой график

Сообщение blackstrip » Пт фев 22, 2019 12:37 am

В Delphi 7 версия TChart, оказывается, с багами. Многие об этом пишут ("проблемы с добавлением или удалением одиночных точек"), но я столкнулся с таким багом в TChart первый раз.

Использовал график типа LineSeries. После очистки графика через Chart1.Series[0].Clear нельзя добавлять точки по одной. Если добавить одну точку, то после этого проходит около секунды и происходит сбой во внутренних модулях TeeChart, вылетает Access Violation и прога схлопывается даже без обработки исключений.

Решение - добавить в чистый график сразу массив из двух одинаковых точек через Chart1.Series[0].AddArray. Если в массив записать этим двум точкам одинаковые Y-координаты. А потом через Chart1.Series[0].XValues[0]:=x1 и Chart1.Series[0].XValues[1]:=x1 присвоить обоим точкам одинаковую X-координату (обозначенную здесь как x1), то на графике появятся две точки друг на друге. Визуально это будет выглядеть как одна точка, но сбоя с Access Violation уже не будет.

Последующие точки можно спокойно добавлять по одной.

p.s. при некоторых значениях координат две точки с одинаковыми координатами тоже дают Access Violation. Опытным путем было установлено, что если указать координаты X у этих точек разные (например, у первой x, а у второй x+1), то ошибка не возникает. Правда тогда придется писать спецусловие - если хотим отрисовать график с одной точкой, то добавляем вместо нее две по этому принципу, а если хотим нарисовать две и более точки на графике - то все как обычно.

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 11 гостей