Страница: 1 |
Страница: 1 |
Вопрос: Структурированные переменные
Добавлено: 01.03.11 23:43
Автор вопроса: ninze
Доброго времени суток от начинающего програмера.
как-то возникла острая необходимость в чётко структурированных переменных. облазил пол интернета, но что-то ответа на свой вопрос не нашёл. в распоряжении VB2008.
вопрос таков- как сделать структурированную переменную.
пробовал через класс:
Public Class MPC
Public Ayd As String
Public Vr(100) As String
Public Colr(100) As Integer
End Class
однако возникала проблема, поскольку переменная
Dim MasPrClr(4) As MPC = New MPC
не могла стать массивом, а работала только как ссылка на класс.
пробовал через Enum, отказывается делать массивы внутри себя.
пробовал через Structure, отказывается работать с не динамическими векторами, иначе говоря с указанной размерность. а на динамические требует опять "New".
в общем, уважаемые спецы, подскажите пожалуйста как же привести в порядок переменные.
извините если где не заметил.
заранее спасибо.
P.S. нутром чую что должно быть простое и красивое описание. надо-то всего-то получить список: "название" и два параллельных вектора. на том же древнем паскале это делается в 2 строчки через рекорд.
если не подскажите придётся делать через стринговый массив, а оба вектора сливать в один, на подобии молнии.... но как-то это не красиво...
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #1
Добавлено: 01.03.11 23:51
Для каждого элемента массива нужен новый инстанс класса. В этом суть. New создает один объект.
Dim MasPrClr(4) As MPC, i as long
for i=0 to 4
set MasPrClr(i) = New MPC
next i
Номер ответа: 2
Автор ответа:
ninze
Вопросов: 1
Ответов: 2
Профиль | | #2
Добавлено: 01.03.11 23:53
Спасибо, за ответ. буду пробовать
Номер ответа: 3
Автор ответа:
ninze
Вопросов: 1
Ответов: 2
Профиль | | #3
Добавлено: 02.03.11 00:00
огромное спасибо. работает всё на ура.а то уже начал зарываться в документацию...
вопрос немного не в тему, но интересно. почему i для счётчика описали до цикла? мне казалось что в функции цикла удобнее
( For i As Integer = 0 To 4), главное потом нигде не мешается. ещё какой мудрости не знаю?
Номер ответа: 4
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #4
Добавлено: 02.03.11 01:46
i as long
В дотнете массивы индексируются integer'ом (32 битное целое знаковое число). С long будет ошибка (при условии если компилировать с включенной жесткой проверкой типов)
Номер ответа: 5
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #5
Добавлено: 02.03.11 21:29
ninze, нее, это я не знаю мудрости это синтаксис классического бейсика) Конечно в нормальных языках можно объявлять в описании цикла
Artyom, Integer 32битный? а long тогда какой?
Номер ответа: 6
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #6
Добавлено: 02.03.11 21:35
64х битный, конечно же.
Номер ответа: 7
Автор ответа:
VβÐUηìt
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #7
Добавлено: 02.03.11 21:41
64-х битный. Раста, VB6 запливали еще когда все херачили на 16-битных системах. Поэтому у него Integer - 16-битный. Щас все интегеры 32-битные, лонги 64-битные. Для кошерности можно еще взять Decimal - 96 бит. А Вообще, можно же как-то так (примерно):
Так что все можно. Ставите дополнительно еще 73 миллиарда гигабайт оперативной памяти к себе в комп, и все с радостью заработает, смекнули?