Составные типы

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

thourie
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 18
Зарегистрирован: 12.03.2009 (Чт) 19:32
Откуда: Курск

Составные типы

Сообщение thourie » 12.03.2009 (Чт) 19:40

Помогите пожалуйста! Крайняя заставила использовать в своей программе составные типы! Но видимо я разгневал небеса, и компилятор выдаёт дивную ошибку: типа я мол такого не знаю и знать не хочу!
Код: Выделить всё
Dim Vec3l() As ULong = New ULong(3) {}
Dim v As Vec3l

Помогите кто чем может! Сами мы не местные! :cry:

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Составные типы

Сообщение MIT » 12.03.2009 (Чт) 19:47

Объявить переменную таким образом невозможно.
Как вариант - создай структуру с необходимым полем.

З.Ы.: И удали вторую такую же тему, а то щас придут злые модераторы и будут ругацца :)
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

thourie
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 18
Зарегистрирован: 12.03.2009 (Чт) 19:32
Откуда: Курск

Re: Составные типы

Сообщение thourie » 12.03.2009 (Чт) 19:52

Собственно первую строчку я не сам придумал списал с RSDN там всё так красиво написано и похоже на правду!

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Составные типы

Сообщение MIT » 12.03.2009 (Чт) 19:52

Так и в чем проблема?
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

thourie
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 18
Зарегистрирован: 12.03.2009 (Чт) 19:32
Откуда: Курск

Re: Составные типы

Сообщение thourie » 12.03.2009 (Чт) 20:10

Проблема в том что он его в упор не видит, хотя в самом объявлении моего составного типа ошибки не выдаёт! Дословно: Ошибка Тип "Vec3l" не определен. Эта ошибка выскакивает при объявлении переменной моего типа!

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Составные типы

Сообщение MIT » 12.03.2009 (Чт) 20:32

Типы (а точнее структуры) задаются не так.
Кодом Dim Vec3l() As ULong = New ULong(3) {} ты создаешь переменную-массив типа Uint64
Что бы создать свою структуру пишем по аналогии с:
Код: Выделить всё
Public Structure SomeType
  Dim value as integer
  Dim intex as integer
  etc...
End Structure

И уже потом объявлять переменные своего типа: Dim MyVar as SomeType
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

thourie
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 18
Зарегистрирован: 12.03.2009 (Чт) 19:32
Откуда: Курск

Re: Составные типы

Сообщение thourie » 12.03.2009 (Чт) 20:40

Да, это понятно! Так можно и класс объявить или объединение! Но мне нужен именно свой тип, я за этику кода! Ведь наверняка есть в языке нужный оператор который должен работать, а иначе на фиг надо. Вся проблема в том что не знаю как его найти! :?:
Последний раз редактировалось thourie 12.03.2009 (Чт) 20:46, всего редактировалось 1 раз.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Составные типы

Сообщение MIT » 12.03.2009 (Чт) 20:45

thourie писал(а):Но мне нужен именно свой тип
Ммм... А зачем?
Чего ты хочешь добиться?
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

thourie
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 18
Зарегистрирован: 12.03.2009 (Чт) 19:32
Откуда: Курск

Re: Составные типы

Сообщение thourie » 12.03.2009 (Чт) 20:49

Типа:
Код: Выделить всё
Num = 0..9;
m: num;

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Составные типы

Сообщение MIT » 12.03.2009 (Чт) 20:57

М-да.

Код: Выделить всё
        Dim MyArr1() As Integer = New Integer() {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
Код: Выделить всё
        Dim MyArr2(9) As Integer
        MyArr2 = New Integer() {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

Оно?
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

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

Re: Составные типы

Сообщение Viper » 13.03.2009 (Пт) 9:12

thourie писал(а):Типа:
Код: Выделить всё
Num = 0..9;
m: num;
Перечисление? Ключевое слово Enum.
Весь мир матрица, а мы в нем потоки байтов!

thourie
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 18
Зарегистрирован: 12.03.2009 (Чт) 19:32
Откуда: Курск

Re: Составные типы

Сообщение thourie » 13.03.2009 (Пт) 16:52

Спасибо конечно, но это всё немного не то. Приведённые примеры это переменные типа Integer, а мне нужно свой тип что бы я мог объявить любое количество переменных!
Кстати, между нами девочками, перечисления это константы!

Придётся свой класс писать! 8)

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Составные типы

Сообщение MIT » 13.03.2009 (Пт) 16:57

thourie писал(а): Приведённые примеры это переменные типа Integer, а мне нужно свой тип что бы я мог объявить любое количество переменных!
Как-то ты странно изъясняешься. Тип с любым количеством переменных я тебе, вроде как показывал:
Код: Выделить всё
Public Structure SomeType
  Dim value as integer
  Dim intex as integer
  Dim data1() as string
  Dim EVal as MySomeEmun
  etc...
End Structure
Dim MyArr() as SomeType


Если и на этот раз я не угодал, но как можно конструктивнее объясни задачу.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

thourie
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 18
Зарегистрирован: 12.03.2009 (Чт) 19:32
Откуда: Курск

Re: Составные типы

Сообщение thourie » 13.03.2009 (Пт) 18:10

Да нет же. Я хочу сделать тип на пример хранящий только цифры! 0..9. И объявить много переменных этого типа, а не один тип со многими переменными, как структура! Understand me!
Код: Выделить всё
a, b, c As TNum

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Составные типы

Сообщение MIT » 13.03.2009 (Пт) 18:40

Надеюсь, что сейчас я тебя понял :)
Тебе нужен тип, в котором числовое значение может лежать в указанном диапазоне? Т.е. тип, значения которого предопределены?.. Т.е. Enum.

Код: Выделить всё
Public Emun MyEnum as integer
  1
  2
  3
  4
  5
  6
  7
  8
  9
  0
End Enum


Если я и опять не понял, то пойду убьюсь апстену.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

thourie
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 18
Зарегистрирован: 12.03.2009 (Чт) 19:32
Откуда: Курск

Re: Составные типы

Сообщение thourie » 14.03.2009 (Сб) 8:38

Нет! Убивать себя не надо, сломаешь стену! А она может пригодиться для кого-нибудь другого, кому это действительно нужно! :wink:
Дело не в конкретной реализации конкретного кода, а в принципе: есть в Васике такая возможность (определять свои типы) или нет! Просто (да/нет) Нет ну и хрен с ним (с Васиком)! 8)

thourie
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 18
Зарегистрирован: 12.03.2009 (Чт) 19:32
Откуда: Курск

Re: Составные типы

Сообщение thourie » 14.03.2009 (Сб) 8:49

Но если приспичит вот видео урок:
http://vkontakte.ru/video6199621_90931183

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Составные типы

Сообщение iGrok » 14.03.2009 (Сб) 13:08

Я правильно понимаю, что дельфя при объявлении Num: 0..9 создаёт тип "Num", после чего переменные такого типа могут принимать только значения от 0 до 9? А что происходит при присвоении такой переменной значения "a" или, к примеру, 101 ?
Компилятор ругается?

Если я всё правильно понял, тут такого нет.
label:
cli
jmp label

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Составные типы

Сообщение MIT » 14.03.2009 (Сб) 13:59

Изображение
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

thourie
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 18
Зарегистрирован: 12.03.2009 (Чт) 19:32
Откуда: Курск

Re: Составные типы

Сообщение thourie » 14.03.2009 (Сб) 16:42

А жаль! Что касается Delphi то компилятор ругаться не может (в данном случае), по скольку не знает что введут. А при вводе некорректного числа выскочит стандартный Exeption, и на валяет всем по первое, что бы повадно не было!

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Составные типы

Сообщение iGrok » 14.03.2009 (Сб) 16:50

thourie писал(а):А жаль! Что касается Delphi то компилятор ругаться не может (в данном случае), по скольку не знает что введут. А при вводе некорректного числа выскочит стандартный Exeption, и на валяет всем по первое, что бы повадно не было!

А. Тогда понятно. А потом этот самый Exception ты отлавливаешь и развлекаешься с ним как тебе вздумается?
Ну тогда, как вариант, делать проверку вручную после ввода/присвоения..
label:
cli
jmp label

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

Re: Составные типы

Сообщение Viper » 16.03.2009 (Пн) 9:20

Аффтар, йаду пить не нада, апстену сибя убивать тоже! Но тебе надо объявить таки Enum! Это конечно не аналог дельфийской штуки, но задачу решит.
Как то так
Код: Выделить всё
Enum Num
Zero=0
One=1
Two=2
End Enum
Далее в коде ты можешь использовать этот тип (Num то есть) любым способом, то есть объявлять переменные этого типа, использовать его как аргументы или возвращаемые значения функций и так далее.
Весь мир матрица, а мы в нем потоки байтов!

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Составные типы

Сообщение iGrok » 16.03.2009 (Пн) 12:49

Viper писал(а):...штуки, но задачу решит...

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

А ему надо, чтобы в рантайме при присвоении переменной значения, не входящего в объявленный диапазон, валился Exception, который можно перехватить и обработать. Получается, это несколько упрощает проверку пользовательского ввода. Но без этого спокойно можно обойтись, делая проверку после ввода "руками"..
label:
cli
jmp label

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

Re: Составные типы

Сообщение Viper » 17.03.2009 (Вт) 8:33

Так проверить значение на вхождение в диапазон можно статическим методом [Enum].IsDefined. Попроще будет, чем вручную то. Пример:
Код: Выделить всё
Enum Num
    One = 1
    Two = 2
    Three = 3
End Enum
Sub Main()
    Console.WriteLine([Enum].IsDefined(GetType(Num), 2))
    Console.WriteLine([Enum].IsDefined(GetType(Num), 6))
End Sub
Весь мир матрица, а мы в нем потоки байтов!

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Составные типы

Сообщение iGrok » 17.03.2009 (Вт) 11:37

Viper писал(а):Так проверить значение на вхождение в диапазон можно статическим методом [Enum].IsDefined. Попроще будет, чем вручную то.

Блин, я опять не заметил в заголовке строки ".NET" =)
Ну раз так, то это задачу неплохо облегчает. )
label:
cli
jmp label


Вернуться в Visual Basic .NET

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 88

    TopList  
cron