Подскажите функцию для работы с массивом...

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

Подскажите функцию для работы с массивом...

Сообщение Death666 » 27.12.2006 (Ср) 4:55

Нужна функция, которая удаляет пустые элементы массива... если, конечно, такая существует...

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 27.12.2006 (Ср) 8:10

Тока ручками. Особливо если учесть, что понятие "пустой элемент массива" весьма субъективное.
Весь мир матрица, а мы в нем потоки байтов!

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 27.12.2006 (Ср) 9:46

Death666, про удаление в массивах: http://www.vbstreets.ru/VB/Articles/66160.aspx
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

Death666
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 17.12.2006 (Вс) 2:19
Откуда: Минск

Сообщение Death666 » 27.12.2006 (Ср) 13:29

Ещё один вопрос: где ошибка, почему ругается?

Private Sub Form_Load()


Dim arrdata()
Dim i As Single, j As Integer, tend As Single

j = 0
For i = Val(Form2.Text8.Text) To Val(Form2.Text38.Text) Step Val(Form2.Text9.Text) '0.0625
j = j + 1

GrafAlf i, tend ' процедура вычисляющая tend

ReDim Preserve arrdata(1 To j, 1 To 2) As Variant
arrdata(j, 1) = Str(i)

arrdata(j, 2) = tend

Next i

MSChart1.chartType = VtChChartType2dLine
MSChart1.ChartData = arrdata


End Sub

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 27.12.2006 (Ср) 13:42

Death666 писал(а):Ещё один вопрос: где ошибка, почему ругается?


1. На какой строке возникает ошибка?
2. Какие значения переменных при этом?
3. Какое сообщение об ошибке?

Ответив на эти вопросы ты найдешь ответ и на свой...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 27.12.2006 (Ср) 15:15

MSDN писал(а):Similarly, when you use Preserve, you can change the size of the array only by changing the upper bound; changing the lower bound causes an error.

Death666
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 17.12.2006 (Вс) 2:19
Откуда: Минск

Сообщение Death666 » 28.12.2006 (Чт) 1:48

andreymp, так вроде в моём случае и меняется только верхний предел: arrdata(1 To j, 1 To 2) - j на каждой итерации увеличивается на 1...

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 28.12.2006 (Чт) 2:01

Death666, верхний вот так: arrdata(1 To 2, 1 To j)
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

Death666
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 17.12.2006 (Вс) 2:19
Откуда: Минск

Сообщение Death666 » 28.12.2006 (Чт) 13:41

Matew, точно... ты прав. Так работает, но такой массив не засунешь в MSChart... Спасибо, что просвятил.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 28.12.2006 (Чт) 17:45

Death666 писал(а):Так работает, но такой массив не засунешь в MSChart.

А транспонировать очищенный массив - религия не позволяет?

Death666
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 17.12.2006 (Вс) 2:19
Откуда: Минск

Сообщение Death666 » 29.12.2006 (Пт) 1:48

Ennor писал(а):
Death666 писал(а):Так работает, но такой массив не засунешь в MSChart.

А транспонировать очищенный массив - религия не позволяет?

Вы бы лучше подсказали функцию транспонирования, чем философствовать на тиологические темы...

Dmitriy2003
Постоялец
Постоялец
 
Сообщения: 690
Зарегистрирован: 27.05.2003 (Вт) 22:47
Откуда: Deutschland

Сообщение Dmitriy2003 » 29.12.2006 (Пт) 1:54

А разве есть такая функция??? :roll: помоему ток ручками
Dmitrich

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 29.12.2006 (Пт) 6:53

Встроенной функции в VB6 нет, верно. Как-то так, видимо:
Код: Выделить всё

' На входе подразумевается, что массив arrdata() - это валидный двумерный массив
dim arr() as single
redim arr(lbound(arrdata(), 2) to ubound(arrdata(), 2), lbound(arrdata(), 1) to ubound(arrdata(), 1))
dim x as long, y as long
for x=lbound(arrdata(), 1) to ubound(arrdata(), 1)
  for y = lbound(arrdata(), 2) to ubound(arrdata(), 2)
    arr(y, x) = arrdata(x, y)
  next y
next x

Уточни только в хелпе, правильно ли я использовал второй аргумент LBound/UBound - по памяти писал, мог и ошибиться.

Death666
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 17.12.2006 (Вс) 2:19
Откуда: Минск

Сообщение Death666 » 30.12.2006 (Сб) 0:26

Всем спасибо за помощь.


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

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

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 107

    TopList  
cron