Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Анализ наличия Cyrillic в строке / 12 сообщений из 12, страница 1 из 1
13.07.2006, 11:04
    #33850143
Atomic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ наличия Cyrillic в строке
Посоветуйте рациональный способ наличая символов Кирилицы в строке.

Задача такая, если пользователь вводит в поле хотя-бы один русский символ (или спецсимвол), то посылать его наХ :)

Заранее спасибо!!!
...
Рейтинг: 0 / 0
13.07.2006, 11:18
    #33850211
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ наличия Cyrillic в строке
авторPrivate Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii >= 192 Then KeyAscii = 0
End Sub192-255 русский алфавит. Коды спецсимволов сам выясняй.
...
Рейтинг: 0 / 0
13.07.2006, 11:41
    #33850293
Atomic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ наличия Cyrillic в строке
Не густо :)
Чего-то не клеится...
...
Рейтинг: 0 / 0
13.07.2006, 11:45
    #33850312
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ наличия Cyrillic в строке
можно проверить раскладку клавиатуры
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Declare Function GetKeyboardLayout Lib "User32" ( _
  ByVal dwLayout As Long) As Long
Private Const kb_lay_ru As Long =  68748313 
Private Const kb_lay_en As Long =  67699721 
Sub ChangeKeyboardLayout()
    ' Определяем текущую раскладку клавиатуры.
    If GetKeyboardLayout( 0 ) =  68748313  Then MsgBox "RUS"
End Sub
...
Рейтинг: 0 / 0
13.07.2006, 11:48
    #33850323
marvan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ наличия Cyrillic в строке
Какая нелюбовь к языку!
Можно смотреть раскладку клавиатуры. (GetKeyboardLayoutName)
Только, вставку из буфара обмена так не провериш.
...
Рейтинг: 0 / 0
13.07.2006, 12:36
    #33850533
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ наличия Cyrillic в строке
marvanКакая нелюбовь к языку!
Можно смотреть раскладку клавиатуры. (GetKeyboardLayoutName)
Только, вставку из буфара обмена так не провериш.
а по символам проверять, если допустим включён французский или арабский?
получается сначала надо кодировку проверять, а потом >128.
хотя, может я чего подзабыл или не знал?
...
Рейтинг: 0 / 0
13.07.2006, 14:29
    #33851120
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ наличия Cyrillic в строке
А смысл проверять раскладку? Попробуй введи русские символы в латинской раскладке. Только copy-paste. Но в условиях вороса говорится только про ввод в поле посимвольно.

Можно сделать наоборот - пропускать только латиницу. Коды с 65 по 122 включительно. Цифры - 48-57.
...
Рейтинг: 0 / 0
13.07.2006, 14:32
    #33851133
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ наличия Cyrillic в строке
Кроме того можно заблокировать ctrl+v. Код - 22. Хотя shift+ins так не заблокируешь.
...
Рейтинг: 0 / 0
14.07.2006, 10:43
    #33853160
Atomic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ наличия Cyrillic в строке
Все спасибо :)
Пришлось самому извратиться, только вот не нашел функцию - подобие SQL синтаксиса "In" :

Private Sub Check_BadSymbols()
Dim i As Integer
Dim a As Boolean
i = 1
a = False
Do Until i = Len(SfwEdit10001.Value) + 1 Or a = True
Select Case Asc(Mid(SfwEdit10001.Value, i, 1))
Case Is < 45
ThisProcess.ScaMessageBox "Недопустимый символ", "'" & Mid(SfwEdit10001.Value, i, 1) & "Только цифры и Латиница!", vbOKOnly
a = True
Case 46
ThisProcess.ScaMessageBox "Недопустимый символ", "'" & Mid(SfwEdit10001.Value, i, 1) & " Только цифры и Латиница!", vbOKOnly
a = True
Case 47
ThisProcess.ScaMessageBox "Недопустимый символ", "'" & Mid(SfwEdit10001.Value, i, 1) & " Только цифры и ЛатиницаÑÈÌÂÎËÛ!", vbOKOnly
a = True
Case 58
ThisProcess.ScaMessageBox "Недопустимый символ", "'" & Mid(SfwEdit10001.Value, i, 1) & " Только цифры и ЛатиницаÑÈÌÂÎËÛ!", vbOKOnly
a = True
Case 59
ThisProcess.ScaMessageBox "Недопустимый символ", "'" & Mid(SfwEdit10001.Value, i, 1) & " Только цифры и ЛатиницаÑÈÌÂÎËÛ!", vbOKOnly
a = True
Case 60
ThisProcess.ScaMessageBox "Недопустимый символ", "'" & Mid(SfwEdit10001.Value, i, 1) & " Только цифры и Латиница!", vbOKOnly
a = True
Case 61
ThisProcess.ScaMessageBox "Недопустимый символ", "'" & Mid(SfwEdit10001.Value, i, 1) & " Только цифры и Латиница!", vbOKOnly
a = True
Case 62
ThisProcess.ScaMessageBox "Недопустимый символ", "'" & Mid(SfwEdit10001.Value, i, 1) & " Только цифры и Латиница!", vbOKOnly
a = True
Case 63
ThisProcess.ScaMessageBox "Недопустимый символ", "'" & Mid(SfwEdit10001.Value, i, 1) & " Только цифры и Латиница!", vbOKOnly
a = True
Case 64
ThisProcess.ScaMessageBox "Недопустимый символ", "'" & Mid(SfwEdit10001.Value, i, 1) & " Только цифры и Латиница!", vbOKOnly
a = True
Case 91
ThisProcess.ScaMessageBox "Недопустимый символ", "'" & Mid(SfwEdit10001.Value, i, 1) & " Только цифры и Латиница!", vbOKOnly
a = True
Case 92
ThisProcess.ScaMessageBox "Недопустимый символ", "'" & Mid(SfwEdit10001.Value, i, 1) & " Только цифры и Латиница!", vbOKOnly
a = True
Case 93
ThisProcess.ScaMessageBox "Недопустимый символ", "'" & Mid(SfwEdit10001.Value, i, 1) & " Только цифры и Латиница!", vbOKOnly
a = True
Case 94
ThisProcess.ScaMessageBox "Недопустимый символ", "'" & Mid(SfwEdit10001.Value, i, 1) & " Только цифры и Латиница!", vbOKOnly
a = True
Case 96
ThisProcess.ScaMessageBox "Недопустимый символ", "'" & Mid(SfwEdit10001.Value, i, 1) & " Только цифры и Латиница!", vbOKOnly
a = True
Case Is > 122
ThisProcess.ScaMessageBox "Недопустимый символ", "'" & Mid(SfwEdit10001.Value, i, 1) & " Только цифры и Латиница!", vbOKOnly
a = True
Case Else
i = i + 1
End Select
Loop
End Sub
...
Рейтинг: 0 / 0
14.07.2006, 14:30
    #33854067
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ наличия Cyrillic в строке
а так не пойдет?

Код: plaintext
1.
2.
3.
4.
5.
6.
Public Function Check_BadSymbols(sStr As String) As Boolean
    Check_BadSymbols = False
      
    If sStr Like "*[йцукенгшщзхъфывапролджэячсмитьбю    ]*" Then Check_BadSymbols = True 'наличие руских букв в строке
    
End Function

токо вот проблема спец символы занести в строку фильтра ("таб" я добавил, а вот другие...)
...
Рейтинг: 0 / 0
14.07.2006, 14:37
    #33854091
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ наличия Cyrillic в строке
HandKotтоко вот проблема спец символы занести в строку фильтра ("таб" я добавил, а вот другие...)

вот как можно сделать

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Public Function Check_BadSymbols(sStr As String) As Boolean
    Check_BadSymbols = False
      
    Dim f As String

    
    f = "*[" + "йцукенгшщзхъфывапролджэячсмитьбю    " + Chr( 10 ) + Chr( 11 ) + Chr( 12 ) + "]*"
    
    If sStr Like f Then Check_BadSymbols = True 'наличие руских букв в строке
    
End Function

...
Рейтинг: 0 / 0
14.07.2006, 16:57
    #33854734
Letter_D
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ наличия Cyrillic в строке
А что так много букв?
Вот так надо:
Код: plaintext
Like "*[А-я]*"
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Анализ наличия Cyrillic в строке / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]