Выводить в MSChart не весь массив, а последние его значения

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
layriona1
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 01.09.2010 (Ср) 11:24

Выводить в MSChart не весь массив, а последние его значения

Сообщение layriona1 » 01.09.2010 (Ср) 11:35

Здравствуйте! Я строю в MSChart динамический график каждую секунду (по оси x идет время):
Код: Выделить всё
Dim newArh(60, 1 To 2)

Public Function graf()
MSChart1.Plot.UniformAxis = False
MSChart1.chartType = VtChChartType2dXY
MSChart1.ChartData = newArh
End Function

Private Sub Timer5_Timer()
tx = tx + 1
newArh(tx, 1) = tx
newArh(tx, 2) = Palog1
graf
End Sub


Но в данном случае он строит только определенное количество времени, а мне нужен динамический массив. Причем, чтобы на графике показывались значения, к примеру, последних 10 минут. То есть чтобы в массиве сохранялись значения только последних десяти минут, так как программа не выдерживает слишком большого количества данных. Или как вариант, чтобы график строился по точкам. Подскажите пожалуйста, возможно ли сделать что-то подобное?

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Выводить в MSChart не весь массив, а последние его значе

Сообщение FireFenix » 01.09.2010 (Ср) 12:53

Код: Выделить всё
ReDim newArh(100500)

или
Код: Выделить всё
ReDim Preserve newArh(100500)

где 100500 - верхний предел массива
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

layriona1
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 01.09.2010 (Ср) 11:24

Re: Выводить в MSChart не весь массив, а последние его значе

Сообщение layriona1 » 01.09.2010 (Ср) 13:35

почему 100500? у меня максимальный предел - 10000 для нормальной работы программы. И потом, массив же двумерный, а при помощи ключевого слова Preserve может быть изменена только верхняя граница последней размерности массива, то есть 1 to 2, а мне это не нужно. И как же сделать, чтобы массив создавался только из последних значений?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Выводить в MSChart не весь массив, а последние его значе

Сообщение alibek » 01.09.2010 (Ср) 14:33

Изменяемую размерность сделай последней, т.е. Dim newArh(1 To 2, 60).
А зачем тебе вообще массив?
Что такое Palog1?
Lasciate ogni speranza, voi ch'entrate.

layriona1
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 01.09.2010 (Ср) 11:24

Re: Выводить в MSChart не весь массив, а последние его значе

Сообщение layriona1 » 02.09.2010 (Чт) 11:01

А как можно без массива строить графики в MSChart? Мне же нужно строить график по двум точкам. Как же сделать изменяемую размерность последней, если синтаксис MSChart именно такой? (то есть MSChart1.ChartData = newArh), или я ошибаюсь? Palog1 - это значения, которые считываются каждую секунду с прибора.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Выводить в MSChart не весь массив, а последние его значе

Сообщение Хакер » 02.09.2010 (Чт) 11:21

синтаксис MSChart

Когда пишут такую фразу, в мире умирает по одному честному программисту.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

layriona1
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 01.09.2010 (Ср) 11:24

Re: Выводить в MSChart не весь массив, а последние его значе

Сообщение layriona1 » 03.09.2010 (Пт) 9:49

я не программист, а вот ответы очень нужны по делу.

hclubmk
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 240
Зарегистрирован: 19.06.2009 (Пт) 14:23
Откуда: От-туда

Re: Выводить в MSChart не весь массив, а последние его значе

Сообщение hclubmk » 03.09.2010 (Пт) 13:51

1) Зачем 2dXY, если один из рядов - последовательность с шагом +1? Не проще 2dLine?
2) При tx > 60 cдвигай newArh влево
Научились ли Вы радоваться трудностям?

layriona1
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 01.09.2010 (Ср) 11:24

Re: Выводить в MSChart не весь массив, а последние его значе

Сообщение layriona1 » 06.09.2010 (Пн) 11:20

Спасибо за ответ!
Насчет 2dline, я об этом думала, попробовала - у меня пока не получилось.
А то, что нужно сдвигать массив влево (только разве не вправо), я сама понимаю, но как это сделать?

layriona1
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 01.09.2010 (Ср) 11:24

Re: Выводить в MSChart не весь массив, а последние его значе

Сообщение layriona1 » 06.09.2010 (Пн) 11:26

надо же как-то менять и нижюю границу массива и верхнюю?

hclubmk
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 240
Зарегистрирован: 19.06.2009 (Пт) 14:23
Откуда: От-туда

Re: Выводить в MSChart не весь массив, а последние его значе

Сообщение hclubmk » 06.09.2010 (Пн) 19:05

Смотри личные сообщения.
Научились ли Вы радоваться трудностям?


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: AhrefsBot и гости: 104

    TopList