Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Пользовательский тип данных в VB6 Добавлено: 30.09.09 17:47  

Автор вопроса:  Евгений
Привет всем!
Я начинающий в VB6.
Помогите пожалуйста разобраться...
 В модуле создал тип данных и переменную EventMass() со сойствами Event_Number, Event_Date, Event_X и т.д

Выглядит так:

Type EventMassPrice
Event_Number As Long
Event_Date As Long
Event_X As Long
Event_Y As Long
Event_Z As Long
Event_Energy As Long
End Type
Public EventMass() As EventMassPrice

EventMass()-переменная о свойствами
например: EventMass(x).Event_Number
      или EventMass(x).Event_Date
x-переменная (чтото вроде индекса) меняется программно для того чтобы сохранить все переменные EventMass().
 Когда в программе пытаюсь присвоить какому нибудь из свойств значение возникает ошибка <Subscript out of range> - вроде превышен какой-то параметр.
 Пробовал переобьявить типы для свойтв (Long, Strig и т.д.) в модуле, но ничего не выходит.
 Если кто нибудь знает где можно почитать про пользовательские типы данных или хорошо владеет вопросом - подскажите...
Заранее благодарен.
-Евгений-

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 AWP



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #1
Добавлено: 30.09.09 19:55
Может ошибка в коде?

и сделайте Public Type

Ответить

Номер ответа: 2
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #2
Добавлено: 30.09.09 22:19
у тебя индекс x выходит за пределы, т.е. например ты объявил массив EventMass(6), а x = 7

Ответить

Номер ответа: 3
Автор ответа:
 Евгений



Вопросов: 7
Ответов: 11
 Профиль | | #3 Добавлено: 01.10.09 05:56
Может я чего не так делаю, но в модуле при обявлении EventMass()в скобки ничего сначала не ставил, потом после вашего совета поставил цифру-стало работать,но только если в программе будет именно эта цифра иначе значения равны нулю. А как запихать в скобки переменную?, ведь если пишу EventMass(X)возникает ошибка.

Ответить

Номер ответа: 4
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #4
Добавлено: 01.10.09 06:03
если ты знаешь, какого размера будет массив, то в модуле пишешь эту цифру в скобках, если не знаешь, то оставляешь пустые скобки, а потом в нужной тебе процедуре пишешь redim EventMass(размер), здесь размер не обязательно цифра, может быть и переменная с нужным значением

Ответить

Номер ответа: 5
Автор ответа:
 AWP



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #5
Добавлено: 01.10.09 12:35
redim EventMass(верхний индекс) (0 - i)

Если изменяешь размер в процессе выполнения программы, то можно использовать
ReDim Preserve EventMass(i) ' Это сохранит данные в массиве.

Ответить

Номер ответа: 6
Автор ответа:
 Евгений



Вопросов: 7
Ответов: 11
 Профиль | | #6 Добавлено: 02.10.09 05:06
Сделал вот что:
В Модуле EventMass()в скобках поставил 5000 просто чтобы больше было и перекрыло требуемое количество номеров - заработало...
А вот переменную туда загнать не могу, из программы это не получается даже переобьявлением массива - ругается и говорит что это не массив.
А что значит в EventMass(верхний индекс) слово верхний индекс и как сделать(0 - i)? наверное есть какой нибудь синтаксис?
Если есть примерчик-подкинте пожалуйста.
Заранее благодарен.

Ответить

Номер ответа: 7
Автор ответа:
 Илья



Вопросов: 1
Ответов: 48
 Профиль | | #7 Добавлено: 02.10.09 06:34
EventMass(верхний индекс) - EventMass(5) - массив из 6 элементов, так же EventMass(123) - массив из 124 элементов (так как ещё есть индекс 0), тоесть объём данного массива, или же индекс "последней переменной"
А вот переменную туда загнать не могу

??? EventMass(Val(x)), где X - Максимум, и содержит число, а чтобы присвоить значению массива значение переменной, нужно сделать чтото подобное:


  1. Dim EventMass(0)
  2. Dim X,Y as single
  3. X = "55"
  4. Y = "96"
  5. ReDim EventMass(1)
  6. EventMass(0)= X
  7. EventMass(1)= Y


Чтение данных по анологии... (код не проверял, но надеюсь ничего не перепутал)

Ответить

Номер ответа: 8
Автор ответа:
 AWP



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #8
Добавлено: 02.10.09 19:03
нет, если длинна масива уже была объявлена ";Dim EventMass(0)", то изменить не получится.
  1.  
  2. ''' Создаешь неопределённый массив
  3.   Dim EventMass()
  4.  
  5. ''' И только потом меняешь его как хочешь.
  6.   Dim EventMass(i) ' (0 to i)

Ответить

Номер ответа: 9
Автор ответа:
 Илья



Вопросов: 1
Ответов: 48
 Профиль | | #9 Добавлено: 03.10.09 10:52
нет, если длинна масива уже была объявлена "im EventMass(0)", то изменить не получится.

Да, точно, и ещё желательно подобные переменные, которые можно изменять из любой точки программы, объявлять в области "General", а не в процедуре (как написал я)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам