Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Как проверить TextBox


Автор: korob2001 29.10.2004, 22:49
Привет!

Перейду сразу к проблеме.

Допустим есть текстовое поле txtName, кнопка cmdAdd и листбокс lstUsers. В текстовом поле юзер должен ввести своё имя.

При событии Change, в поле нужно сделать проверку что вводится имя состоящее не менее чем из 4 сиволов. При событии Click кнопки cmdAdd нужно проверить что имя состоит из латинского или русского алфавита ( но не обоих сразу ). Я могу сделать только проверку на ввод нескольких символов. Вот так:
Код

Private Sub txtName_Change()
           If Len( txtName.Text ) > 3 And Not IsNumeric( txtName.Text ) Then
              ' Разблокировать кнопку "Довавить"
              cmdAdd.Enabled = True
           Else
              ' Заблокировать кнопку "Добавить"
              cmdAdd.Enabled = False
           End If
End Sub

Private Sub cmdAdd_Click()
           ' Вот тут нужна проверка
           If ......... Then
              lstUsers.AddItem CStr( txtName.Text )
           Else
              MsgBox "Вы должны указать имя либо русскими, либо латинскими буквами"
              End Sub
           End If
End Sub

Как вы наверное поняли такой проверки не достаточно, для достижения цели.

В VB 6.0 есть регулярные выражения или что-нибудь подобное?

Автор: cardinal 30.10.2004, 01:25
Может тебе это надо:
http://forum.vingrad.ru/index.php?showtopic=27659

Автор: -Mikle- 30.10.2004, 21:34
вот быстренько накатал ф-ию проверки на корректность логина:
Код
Private Sub Command1_Click()
  If IsUserName(Text1.Text) Then
     MsgBox "Все правильно!", vbInformation
  Else
     MsgBox "Не правильно введено имя пользователя.", vbInformation
  End If
End Sub

Private Function IsUserName(Str As String) As Boolean
  Dim Lang As Long
  Dim lng&, i&
  Dim ch As String * 1
 
  IsUserName = False
  If Len(Str) = 0 Then Exit Function
 
  Lang = GetCharLang(Mid$(Str, 1, 1))
  If Lang = 0 Then Exit Function
 
  For i = 1 To Len(Str)
     lng = GetCharLang(Mid$(Str, i, 1))
     If lng > 0 Then
        If lng <> Lang Then Exit Function
     End If
  Next
  IsUserName = True
End Function

Private Function GetCharLang(ByVal ch As String) As Long
  ch = UCase(ch)
  If ch >= "A" And ch <= "Z" Then
     GetCharLang = 1 'латинский
  ElseIf ch >= "А" And ch <= "Я" Then
     GetCharLang = 2 'русский
  Else
     GetCharLang = 0 'не буква
  End If
End Function


вроде работает как надо...

Автор: korob2001 1.11.2004, 15:15
Большое спасибо.
Меня интересует ещё вот это:
Код

Dim lng&, i&

Что означает символ '&'?

Автор: cardinal 1.11.2004, 15:23
MSDN:
Цитата
Long Data Type

Long (long integer) variables are stored as signed 32-bit (4-byte) numbers ranging in value from -2,147,483,648 to 2,147,483,647. Thetype-declaration character for Long is the ampersand (&).


Соовтетственно есть и другие крючки... :)

Автор: -Mikle- 1.11.2004, 18:08
Код
Dim lng&, i&

равносильно записи
Код
Dim lng as long, i as long


Вот некоторые обозначения:
& - As Long
# - As Double
! - As Single
$ - As String
@ - As Currency
% - As Integer


то есть Dim tmp$ эквивалентно Dim tmp as String

Автор: Mephisto 1.11.2004, 18:23
Цитата
Вот некоторые обозначения:
& - As Long
# - As Double
! - As Single
$ - As String
@ - As Currency
% - As Integer

Только такие приколы не работают, когда определяешь структуры!

Автор: korob2001 2.11.2004, 00:56
Большое спасибо. Я даже не знал о таком способе указания типа.

Автор: cardinal 2.11.2004, 00:59
Я им лично никогда не пользуюсь...

Автор: -Mikle- 2.11.2004, 15:23
я тоже не пользуюсь, только иногда, когда лень лишнюю букву нажать :)
Добавлено @ 15:24
Цитата(Mephisto @ 1.11.2004, 22:23)

Только такие приколы не работают, когда определяешь структуры!

Естественно... Это же часть старого Барсика...

Автор: korob2001 2.11.2004, 15:26
Цитата

Я им лично никогда не пользуюсь...

Да я тоже наверное не буду таким способом пользоваться. Мне всеже больше нравится более длинный способ с As, но более понятный. Хотя знать это необходимо, для работы с чужим кодом.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)