Массив в TYPE
Участников: 3
Страница 1 из 1
Массив в TYPE
Здравствуйте, подскажите пожалуста как устроить нечто подобное(код неправильный):
Type Object
n As integer
poligon(n) As Treuglnik3D
.....
End Type
То есть: у меня есть некий объёкт с N-ым количеством полигонов и его надо отрисовать на месте x,y,z
Подскажите как. Я предполагаю, что надо использовать указатели на начало полигонов объекта, но может есть более простое решение?
Type Object
n As integer
poligon(n) As Treuglnik3D
.....
End Type
То есть: у меня есть некий объёкт с N-ым количеством полигонов и его надо отрисовать на месте x,y,z
Подскажите как. Я предполагаю, что надо использовать указатели на начало полигонов объекта, но может есть более простое решение?
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 30
Откуда : Москва
Re: Массив в TYPE
И ещё вопрос возник: почему нельзя делать так
For per(0)=0 To 127?
For per(0)=0 To 127?
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 30
Откуда : Москва
Re: Массив в TYPE
я так понимаю проблемы с динамическим массивом внутри типа, к сожалению так нельзя, тип обязательно должен быть фиксированного размера, поэтму надо делать либо фиксированный массив, либо использовать указатели. Как вариант, можно массив использовать отдельно от типа, и поотдельности обрабатывать и тип, и массив.
потомучто неразумно использовать элемент массива как счетчик, скажите зачем это Вам надо, и я скажу почему так делать ненадо.И ещё вопрос возник: почему нельзя делать так
For per(0)=0 To 127?
Re: Массив в TYPE
И ещё вопрос возник: почему нельзя делать так
For per(0)=0 To 127?
С первого взгляда может показаться что между per(0) и per - никакой разницы, только первое - это элемент массива, а второе переменная. С переменной такое возможно, а вот с массивом - нет, потому что элемент массива - это указатель на его содержимое. Это тоже самое что ты напишешь:
For 0=0 to 127
Переменная же
For i=0 to 127
Т.е. ты с каждым циклом приравниваешь переменную "i" числу - 0,1,2,3...127. Если поставить вместо переменной массив, то получится что ты число приравниваешь числу, а массив как я говорил является указателем на его содержимое.
Т.е. между x=3 и 3=x есть две большие разницы. Нельзя число приравнять числу, а вот переменную приравнять - можно, на то она и переменная.
Может ты имел ввиду:
Dim i(127) as Integer
For per(i)=0 to 127
;А здесь можно каждый элемент массива заполнять чем-то
per(i) = i
Next
Тогда массив будет содержать значения:
per(0)=0
per(1)=1
per(2)=2
............
per(127)=127
Andrew- Сообщения : 45
Дата регистрации : 2008-09-23
Возраст : 35
Откуда : Киев
Re: Массив в TYPE
несовсем так, элемент массива и переменная по сути являются одним и тем же типом, и зачастую могут без проблем взаимозаменяться, но вот допустим в подобном случае компилятор ругается, и это связанно скорее всего не с типом переменной, а с особенностями самого компилятора, просто, скорее всего, никому в голову не приходило подобным образом использовать циклС переменной такое возможно, а вот с массивом - нет, потому что элемент массива - это указатель на его содержимое.
Re: Массив в TYPE
Andrew, не точная аналогия: ведь я могу написать
a(1)=3 => 0 = 3
a(1)=5 => 3 = 5
Эээээээээээээээ.. Зачем такие сложности? Наверно это пример индусского шифрования китайской программы (я не знаю как это может работать)
Я согласен с tux что скорее всего - это особенность компилятора. Кто-нибуть, кто использует другие языки - посмотрите, если не трудно.
P.S.
Хаха
А такой пример работает:
a(1)=3 => 0 = 3
a(1)=5 => 3 = 5
Dim i(127) as Integer
For per(i)=0 to 127
;А здесь можно каждый элемент массива заполнять чем-то
per(i) = i
Next
Эээээээээээээээ.. Зачем такие сложности? Наверно это пример индусского шифрования китайской программы (я не знаю как это может работать)
- Код:
dim as integer i(127), per
for per = 0 to 127
i(per)=per
next
Я согласен с tux что скорее всего - это особенность компилятора. Кто-нибуть, кто использует другие языки - посмотрите, если не трудно.
P.S.
Хаха
А такой пример работает:
- Код:
dim as integer a(127), i
for i = 0 to 128
a(1)=i
next
Последний раз редактировалось: Gena (Вс Апр 12, 2009 9:26 am), всего редактировалось 2 раз(а)
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 30
Откуда : Москва
Re: Массив в TYPE
А массив в Type, я сделал таким хитрым способом (с помощью ЖЛ):
Сначала (при загрузки карты) я сделал множество списков, хранящих в памяти видеокарты полигоны ( glNewLis(str(n)) ...<>...glEndList )
А потом при отрисовке я буду перемещать точку отсчёта ( glTranslateF ) и вызывать отрисовку списка ( glCallList(str(n)) ). Так-то! =)
Сначала (при загрузки карты) я сделал множество списков, хранящих в памяти видеокарты полигоны ( glNewLis(str(n)) ...<>...glEndList )
А потом при отрисовке я буду перемещать точку отсчёта ( glTranslateF ) и вызывать отрисовку списка ( glCallList(str(n)) ). Так-то! =)
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 30
Откуда : Москва
Re: Массив в TYPE
Dim i(127) as Integer
For per(i)=0 to 127
;А здесь можно каждый элемент массива заполнять чем-то
per(i) = i
Next
немного запутал всех и сам себя. ошибка, не 'For per(i)=0 to 127' a 'For i=0 to 127' и Dim PER(127), вот, теперь все правильно.
dim as integer a127), i
for i = 0 to 128
a(1)=i
next
А в чем особенность работы этого кода? Отсутствие открывающей скобки??? Изначально интересовала строчка 'for per(i) = 0 to 127'
Andrew- Сообщения : 45
Дата регистрации : 2008-09-23
Возраст : 35
Откуда : Киев
Re: Массив в TYPE
Поясню:
Этот код не работает
Этот код не работает
- Код:
dim as integer a(50)
for a(1) = 0 to 50
...
next
- Код:
dim as integer a(50), i
for i = 0 to 50
a(1)=i
...
next
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 30
Откуда : Москва
Страница 1 из 1
Права доступа к этому форуму:
Вы не можете отвечать на сообщения
|
|