Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как в VB задать тип данных,чтобы переменная могла, принимать одно из нескольких значений 
:(
    Опции темы
JaguarSmith
  Дата 14.12.2005, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 16.1.2005

Репутация: нет
Всего: 1



smile Доброе время суток!

smile Как в VB задать тип данных ,чтобы переменная этого типа могла принимать одно из нескольких заранее заданных значений?

в structure нужно чтоб была хотяб одна переменная...
Я попробовал так - но это не совсем то...

Код

Public Class dType

        Public Const _blob As MySql.Data.MySqlClient.MySqlDbType = MySql.Data.MySqlClient.MySqlDbType.Blob
        Public Const _byte As MySql.Data.MySqlClient.MySqlDbType = MySql.Data.MySqlClient.MySqlDbType.Byte
        Public Const _date As MySql.Data.MySqlClient.MySqlDbType = MySql.Data.MySqlClient.MySqlDbType.Date
        Public Const _datetime As MySql.Data.MySqlClient.MySqlDbType = MySql.Data.MySqlClient.MySqlDbType.Datetime
        Public Const _decimal As MySql.Data.MySqlClient.MySqlDbType = MySql.Data.MySqlClient.MySqlDbType.Decimal
        Public Const _double As MySql.Data.MySqlClient.MySqlDbType = MySql.Data.MySqlClient.MySqlDbType.Double
        Public Const _enum As MySql.Data.MySqlClient.MySqlDbType = MySql.Data.MySqlClient.MySqlDbType.Enum
        Public Const _float As MySql.Data.MySqlClient.MySqlDbType = MySql.Data.MySqlClient.MySqlDbType.Float
        Public Const _geometry As MySql.Data.MySqlClient.MySqlDbType = MySql.Data.MySqlClient.MySqlDbType.Geometry
        Public Const _int16 As MySql.Data.MySqlClient.MySqlDbType = MySql.Data.MySqlClient.MySqlDbType.Int16
        Public Const _int24 As MySql.Data.MySqlClient.MySqlDbType = MySql.Data.MySqlClient.MySqlDbType.Int24
        Public Const _int32 As MySql.Data.MySqlClient.MySqlDbType = MySql.Data.MySqlClient.MySqlDbType.Int32
        Public Const _int64 As MySql.Data.MySqlClient.MySqlDbType = MySql.Data.MySqlClient.MySqlDbType.Int64
        Public Const _longblob As MySql.Data.MySqlClient.MySqlDbType = MySql.Data.MySqlClient.MySqlDbType.LongBlob
        Public Const _mediumblob As MySql.Data.MySqlClient.MySqlDbType = MySql.Data.MySqlClient.MySqlDbType.MediumBlob
        Public Const _newdate As MySql.Data.MySqlClient.MySqlDbType = MySql.Data.MySqlClient.MySqlDbType.Newdate
        Public Const _set As MySql.Data.MySqlClient.MySqlDbType = MySql.Data.MySqlClient.MySqlDbType.Set
        Public Const _string As MySql.Data.MySqlClient.MySqlDbType = MySql.Data.MySqlClient.MySqlDbType.String
        Public Const _time As MySql.Data.MySqlClient.MySqlDbType = MySql.Data.MySqlClient.MySqlDbType.Time
        Public Const _timestamp As MySql.Data.MySqlClient.MySqlDbType = MySql.Data.MySqlClient.MySqlDbType.Timestamp
        Public Const _tinyblob As MySql.Data.MySqlClient.MySqlDbType = MySql.Data.MySqlClient.MySqlDbType.TinyBlob
        Public Const _varchar As MySql.Data.MySqlClient.MySqlDbType = MySql.Data.MySqlClient.MySqlDbType.VarChar
        Public Const _year As MySql.Data.MySqlClient.MySqlDbType = MySql.Data.MySqlClient.MySqlDbType.Year

    End Class

PM MAIL YIM   Вверх
arilou
Дата 14.12.2005, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 7
Всего: 61



JaguarSmith
А что, тебе надо чтобы типизировано было? Можно же по простому:

Код

dim vv as object = "string"
if vv.gettype().equals(getttype(string)) then
  dim sval as string = ctype(vv, string)
end if


Для этого можно класс написать свой.


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
JaguarSmith
Дата 14.12.2005, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 16.1.2005

Репутация: нет
Всего: 1



Ну в данном конкретном случае идея сводилось к тому, чтобы заменить длинные и неудобные "MySql.Data.MySqlClient.MySqlDbType" на что-то более приемлемое например, чтобы вместо MySql.Data.MySqlClient.MySqlDbType.Geometry писать _geometry.

Вот и подумал что может можно както сделать тип данных который имеет фиксированный набор значений сам VB ведь это сплош и рядом использует - когда пишешь:
Код

Dim n As MySql.Data.MySqlClient.MySqlDbType
n =

или
Код

Dim n As StringFormatFlags
n =


то после равно тебе предлагают выбрать один из вариантов которым может быть равно n

Я такое жы хочу! smile

Это сообщение отредактировал(а) JaguarSmith - 14.12.2005, 21:09
PM MAIL YIM   Вверх
Exception
Дата 14.12.2005, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 18
Всего: 186



А объявить Enum что тебе мешает?
Код

Enum Mysql
_geometry = blablabla.MySqlDBType.Geometry
_varchar = blablabla.MySqlDBType.VarChar
'blablabla...
End Enum
'юзаем
Dim mytype As Mysql = 'тута раскроется список

Кстати, с Option Strict On компилер будет тебя матом крыть, так что используй CType.
PM   Вверх
JaguarSmith
Дата 15.12.2005, 01:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 16.1.2005

Репутация: нет
Всего: 1



smile Во-во я какраз это и имел ввиду тока не знал что это Enum называется!

СПАСИБО!!!

Зы. Судя по тому, что я не был жестоко покрыт матом со стороны компиллера Option Strict - у меня Off smile
PM MAIL YIM   Вверх
Exception
Дата 15.12.2005, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 18
Всего: 186



На самом деле, лучше его включить. Неявное приведение типов -- зло, ибо могут возникнуть ошибки в рантайме.
PM   Вверх
arilou
Дата 15.12.2005, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 7
Всего: 61



JaguarSmith
smile я тебя не понял


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0926 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.