Страница: 1 |
Страница: 1 |
Вопрос: Типы....
Добавлено: 23.07.05 14:10
Автор вопроса: Gog | ICQ: 288876730
Есть ли в VB функция, определяющая тип переменной ?
Ответы
Всего ответов: 14
Номер ответа: 1
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #1
Добавлено: 23.07.05 15:10
Если ты переменную объявил, то ты уже знаешь, какой у неё тип.
Номер ответа: 2
Автор ответа:
Softer
ICQ: 203660381
Вопросов: 29
Ответов: 205
Web-сайт:
Профиль | | #2
Добавлено: 24.07.05 07:03
2 GSerg. А про Variant ты не забыл?
Функция такая есть. Называется VarType
В аргументе пишешь имя переменной, функция фозвращает номер типа данных:
Код Тип данных Константа
0 - Variant/Empty - vbEmpty
1 - Variant/Null - vbNull
2 - Integer - vbInteger
3 - Long - vbLong
4 - Single - vbSingle
5 - Double - vbDouble
6 - Currency - vbCurrency
7 - Date - vbDate
8 - String - vbString
9 - Object - vbObject
10 - Variant/Error - vbError
11 - Boolean - vbBoolean
17 - Byte - vbByte
Насчет других типов не знаю, у меня в описании только эти.
Номер ответа: 3
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #3
Добавлено: 24.07.05 08:11
Про Variant я не забыл. Просто показалось, что человек не любит option explicit.
Кстати, VarType возвращает не чистый номер. Там ещё может быть Or с vbArray. Поэтому проверять возвращаемое значение надо не на чистое равенство, а через And.
Номер ответа: 4
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #4
Добавлено: 26.07.05 12:44
Хм... ежели ты не про примитивные типы, а про пользовательские типы и классы - то рулит TypeOf.
Номер ответа: 5
Автор ответа:
Gog
ICQ: 288876730
Вопросов: 6
Ответов: 14
Профиль | | #5
Добавлено: 27.07.05 11:59
Огромное спосибо.
Номер ответа: 6
Автор ответа:
Gog
ICQ: 288876730
Вопросов: 6
Ответов: 14
Профиль | | #6
Добавлено: 27.07.05 12:05
GSerg Не мог бы ты по подробне объяснить? А то не очень понятно, или примерчик маленький.....
Номер ответа: 7
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #7
Добавлено: 27.07.05 12:32
Код покажи.
Как объявлена переменная и в каком смысле ты определяешь её тип.
Номер ответа: 8
Автор ответа:
Gog
ICQ: 288876730
Вопросов: 6
Ответов: 14
Профиль | | #8
Добавлено: 28.07.05 12:19
Да нет, кода пока нет.
Но вот приблизительно мне нужно вот что:
Допустим я заношу в ТекстБокс символы типа стринг, а мне можно только интеджер и я в условии проверяю, если занесенные данные типа string, то exit.....
что-то здесь конечно не то, но я не долго думала, просто видимо у меня каша с Delphy.
По-мойму мне здесь нужно просто проверку на ошибку, но все равно хотелось бы знать проверку типов....
Номер ответа: 9
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #9
Добавлено: 28.07.05 12:41
Хм... А не проще ли использовать IsNumeric() ?
Номер ответа: 10
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #10
Добавлено: 28.07.05 12:45
Не понял, тебе нужно проверять вводится число в текстбокс или нет?
Если фильтр по числам, то можно так:
Select Case KeyAscii
Case 48 To 57
Case Else
KeyAscii = 0
End Select
End Sub
Номер ответа: 11
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #11
Добавлено: 28.07.05 12:52
То что ты заносишь в текстбокс по любому преобразуется в стринг, какого бы типа оно не было.
По идее правильно писать Text1.Text=Str$(5), а если ты пишешь Text1.Text=5, то VB подставляет Str$ автоматически.
Номер ответа: 12
Автор ответа:
Gog
ICQ: 288876730
Вопросов: 6
Ответов: 14
Профиль | | #12
Добавлено: 28.07.05 13:01
Поняла как сформировать.....
Мне нужно чтобы в текст бокс можно было вводить скажем только числа .
Номер ответа: 13
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #13
Добавлено: 28.07.05 13:17
Тогда
Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const ES_NUMBER As Long = &H2000&
Private Const GWL_STYLE As Long = -16
Private Sub Form_Load()
Text1.Text = vbNullString
SetWindowLong Text1.hwnd, GWL_STYLE, GetWindowLong(Text1.hwnd, GWL_STYLE) Or ES_NUMBER
End Sub
Номер ответа: 14
Автор ответа:
Gog
ICQ: 288876730
Вопросов: 6
Ответов: 14
Профиль | | #14
Добавлено: 29.07.05 13:04
Спосибо, попробую.