powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проверка строки на cодержание цифр.(Повторно)
24 сообщений из 24, страница 1 из 1
Проверка строки на cодержание цифр.(Повторно)
    #34524170
Александр GAGADDDOC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как проверить строку на содержание цифр ?

С уважением Александр.
...
Рейтинг: 0 / 0
Проверка строки на cодержание цифр.(Повторно)
    #34524419
Программист Дёня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр GAGADDDOCКак проверить строку на содержание цифр ?

С уважением Александр.

В смысле?

Вроде есть функция IsNumeric в модуле Strings которая TRUE возвращает, если строка из цифр или FALSE
...
Рейтинг: 0 / 0
Проверка строки на cодержание цифр.(Повторно)
    #34524472
Т.е. есть ли цифры в тексте?
В условии запроса для поля:
Like "*#*" или Like "*[0-9]*"
В VB:
If str Like ... Then
...
Рейтинг: 0 / 0
Проверка строки на cодержание цифр.(Повторно)
    #34524508
Фотография @TM@ROZчег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно делать и по-дикарски:

if val(stroka) <> "" then
msgbox("There is number in this string")
End if
...
Рейтинг: 0 / 0
Проверка строки на cодержание цифр.(Повторно)
    #34525046
Программист Дёня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@TM@ROZчегможно делать и по-дикарски:

if val(stroka) <> "" then
msgbox("There is number in this string")
End if


Ну точно атмарозчег!
If Val(stroka)<>0 then
MsgBox "There is no number char in this string",vbCritical+vbOkOnly,"Warning:Critinos"
End If
...
Рейтинг: 0 / 0
Проверка строки на cодержание цифр.(Повторно)
    #34525192
Александр GAGADDDOC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Вроде есть функция IsNumeric в модуле Strings которая TRUE возвращает, если строка из цифр или FALSE.

Эта функция выдает True , если строка содержит 121,12 т.е запятую
или 121.12 если в системе устанвлена точка.
А нужно, что бы проверяла на все цифры т.е. строка содержит только цифри.
...
Рейтинг: 0 / 0
Проверка строки на cодержание цифр.(Повторно)
    #34525709
Фотография @TM@ROZчег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дёня и та тоже можно (чёт я ступил) :-)) гы
...
Рейтинг: 0 / 0
Проверка строки на cодержание цифр.(Повторно)
    #34525775
Александр GAGADDDOC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ответы ! Вопрос снят.
Сделали так.

'Провірка на кому
If InStr(cboN.Text, ",") <> 0 Then
MsgBox "(" & cboN.Text & ")", vbExclamation, "(" & cboN.Text & ")" & " Не вірний номер !!! "
Exit Sub
End If
'Провірка на крапку
If InStr(cboN.Text, ". ") <> 0 Then
MsgBox "(" & cboN.Text & ")", vbExclamation, "(" & cboN.Text & ")" & " Не вірний номер !!! "
Exit Sub
End If
'Провірка чи можна преобразувати в число
If IsNumeric(cboN.Text) = False Then
MsgBox "(" & cboN.Text & ")", vbExclamation, "(" & cboN.Text & ")" & " Не вірний номер !!! "
Exit Sub
End If

Модератор: Я вас уже предупреждал на счет рекламы своего сайта. Это второе предупреждение. Третьим будет бан.
...
Рейтинг: 0 / 0
Проверка строки на cодержание цифр.(Повторно)
    #34526534
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то не понял, что сделали-то?

Я подставил в ваш пример 1E10 и это прошло как число.

Вы учли научную нотацию чисел? Вас она устраивает?

И в любом случае, ваше решение не соответствует заявленной вами же проблеме.
...
Рейтинг: 0 / 0
Проверка строки на cодержание цифр.(Повторно)
    #34527273
Программист Дёня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladConnЧто-то не понял, что сделали-то?

Я подставил в ваш пример 1E10 и это прошло как число.

Вы учли научную нотацию чисел? Вас она устраивает?

И в любом случае, ваше решение не соответствует заявленной вами же проблеме.


Я жутко извиняюсь, но неужели так сложно создать свою простую функцию проверки строки на то, запись ли это числа, такая задача стоит в билетах экзамена по информатике обычной школы, ну, колледжа точно. Это не столь больша проблема

Вот вам пусть и грубый пример:

Public Function StringByNumericChar(ByVal S As String) As Boolean
Dim i As Long
Dim l As Long
Dim c As Byte

Let l=Len(S)
10: Let i=i + 1
Let c=Asc(Mid$(S,i,1))
If (c>47)And(c<58) Then
If (i<l) Then
GoTo 10
Else
Goto 20
End If
Else
Exit Function
End If
20: If (i=l) Then Let StringByNumericChar=True
End Function
...
Рейтинг: 0 / 0
Проверка строки на cодержание цифр.(Повторно)
    #34529394
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист Дёня,

К сожалению, ваша функция утверждает, что вот это: 1.0 - не число. А если говорить о стиле... Более запутанного кода на такой крошечной площади с бесчисленными GoTo (!!!) вперемешку с Exit Function я не видел ни-ког-да. У меня бы специально так не получилось. И главный вопрос: что у вас там делает Let ??? Какую важную функцию несет?

Я прошу прощения, если вы посчитаете, что я как-то смеюсь, это не так. Исключительно - код как таковой, и только.

Успехов.
...
Рейтинг: 0 / 0
Проверка строки на cодержание цифр.(Повторно)
    #34529480
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Function Nechislo1(ByVal a As Variant, ByVal dlina As Integer) As Boolean
    Dim r As Boolean
    a = "" & a
    If a = "" Then
        r = True
        GoTo metka
    End If
    If dlina <> Len(a) Then
        r = True
        GoTo metka
    End If
    For i =  1  To dlina
        If IsNumeric(Mid(a, i,  1 )) = False Then
            r = True
            Exit For
        End If
    Next i
metka:
    Nechislo1 = r
End Function
...
Рейтинг: 0 / 0
Проверка строки на cодержание цифр.(Повторно)
    #34529526
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
klen_

К сожалению, ваш код не компилируется.

Что такое dlina? Если этот параметр выводится из первого параметра, то зачем он тогда?
Если убрать Option Explicit, то опять же, 1.0 у вас - не число.
Почему a - Variant?
...
Рейтинг: 0 / 0
Проверка строки на cодержание цифр.(Повторно)
    #34529532
Nikz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladConn
...
функция утверждает, что вот это: 1.0 - не число.
...

Александр GAGADDDOC
...
А нужно, что бы проверяла на все цифры т.е. строка содержит только цифри.

насчет goto и т.д. согласен))

ну и мои пять копеек:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Function IsItNumber(strString As String)
Dim i As Integer
IsItNumber = False
If strString = "" Then Exit Function
For i =  1  To Len(strString)
    If InStr( 1 , "0123456789", Mid(strString, i,  1 )) =  0  Then
        Exit Function
    End If
Next i
IsItNumber = True
End Function
...
Рейтинг: 0 / 0
Проверка строки на cодержание цифр.(Повторно)
    #34529594
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nikz,

Почему ваша функция Variant? Мое утверждение об 1.0 - верно, т.к. Программист Дёня пишет: "..но неужели так сложно создать свою простую функцию проверки строки на то, запись ли это числа..."
...
Рейтинг: 0 / 0
Проверка строки на cодержание цифр.(Повторно)
    #34529654
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nikz, вы, кстати, параметр передаете ByRef. Почему?

Вот пример без циклов, отсекающий все, кроме цифр:

Option Explicit
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const GWL_STYLE = (-16)
Private Const ES_NUMBER As Long = &H2000&

Private Sub Form_Load()
Dim style As Long
Text1.Text = ""
style = GetWindowLong(Text1.hwnd, GWL_STYLE)
SetWindowLong Text1.hwnd, GWL_STYLE, style Or ES_NUMBER
End Sub
...
Рейтинг: 0 / 0
Проверка строки на cодержание цифр.(Повторно)
    #34529667
lena_####
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Function f_IsNumber(v_SourceString) As Boolean
  Dim v_RegExp As Object
  Set v_RegExp = CreateObject("vbscript.regexp")
  
  With v_RegExp
    .Pattern = "\D"
    If .Execute(v_SourceString).Count =  0  Then f_IsNumber = True
  End With
End Function
...
Рейтинг: 0 / 0
Проверка строки на cодержание цифр.(Повторно)
    #34529725
Nikz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladConn...
ах да, ключевое слово стиль...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
Function IsItNumber(ByVal strString As String) As Boolean
'********************************************************
'
'   Функция предназначена для того что бы определить
'   содержит ли строка только цифры, или нет
'
'   Возвращаемые значения
'   True - переданная строка содержит только цифры
'   False - переданная строка пуста,
'           или содержит НЕ только цифры
'
'   автор - Nikz(c) nikita.morozov@gmail.com
'********************************************************
'здесь мы объявляем переменную, которая будет использоваться
'для индексирования текущего символа в переданной функции строке
Dim i As Integer
'назначим функции значение по умолчанию
'по умолчанию она будет возврашать False
IsItNumber = False
'проверим, не пустая ли строка...
'ведь пустая строка не может содержать чисел
'если строка пуста, выходим из функции и возвращаем значение
'по умолчанию - False
If strString = "" Then Exit Function
'начинаем бегать по всем символам в переданной строке
For i =  1  To Len(strString)
    'если символ с индексом i не входит в последовательность "0123456789"
    'значит переданная строка содержит не только цифры
    'в этом случае выходим из функции и возвращаем значение
    'по умолчанию - False
    If InStr( 1 , "0123456789", Mid(strString, i,  1 )) =  0  Then
        Exit Function
    End If
Next i
'после того как мы убедились, что переданная строка не пуста
'и содержит только цифры, присваиваем функции значение True
'и завершаем выполнение
IsItNumber = True
End Function
я надеюсь ничего страшного в том что комментарии на русском...

VladConn
Option Explicit
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const GWL_STYLE = (-16)
Private Const ES_NUMBER As Long = &H2000&

Private Sub Form_Load()
Dim style As Long
Text1.Text = ""
style = GetWindowLong(Text1.hwnd, GWL_STYLE)
SetWindowLong Text1.hwnd, GWL_STYLE, style Or ES_NUMBER
End Sub

спрашивается, а причем тут овиплокос?
хотя штука интересная, возьму на заметку)
...
Рейтинг: 0 / 0
Проверка строки на cодержание цифр.(Повторно)
    #34529750
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lena_####, да! Я тут пытаюсь сварганить похожее через Like. Но вот Pattern...
...
Рейтинг: 0 / 0
Проверка строки на cодержание цифр.(Повторно)
    #34529797
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nikz,

Класс!!!

:0)

Что такое овиплокос?
Никита, если вам интересно, в моем примере, если поменять константы, то можно похоже контролировать не только цифры, но, скажем, верхний или нижний регистр.

Насчет стиля... не обижайтесь, ради Б-га. Замучился в свое время с чужим кодом. Когда пример маленький - ладно, а в миллионах строк слабый стиль становится почти непреодолимым препятствием и вылезает в немалую копеечку.

Успехов
...
Рейтинг: 0 / 0
Проверка строки на cодержание цифр.(Повторно)
    #34529815
Nikz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:)
...
Рейтинг: 0 / 0
Проверка строки на cодержание цифр.(Повторно)
    #34535035
Программист Дёня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladConnПрограммист Дёня,

К сожалению, ваша функция утверждает, что вот это: 1.0 - не число. А если говорить о стиле... Более запутанного кода на такой крошечной площади с бесчисленными GoTo (!!!) вперемешку с Exit Function я не видел ни-ког-да. У меня бы специально так не получилось. И главный вопрос: что у вас там делает Let ??? Какую важную функцию несет?

Я прошу прощения, если вы посчитаете, что я как-то смеюсь, это не так. Исключительно - код как таковой, и только.

Успехов.

Я тожа жутко извиняюсь, но у вас соображалка вообще есть, вы в название функции вчиталися?
Моя функция проверяет лишь то, что строка состоит только из цифр, а не проверяет, число там записано или *рень какая-та. И кто вам сказал, что 1.0 это запись числа, да у них там, где всё через пэ это десятичная дробь, но мы в Росии и Европе кстати тоже запишем это так 1,0 и естественно для этого нужна совсем другая функция, более расширенная, чем моя.
Кстати, прежде чем риздеть, могли бы свою функшэн предложить, а то я смотрю судить каждый горазд, а вот как своё лучшее предложить, так ни одна мамна .... вобщем всем всё понятно

Модератор: Если постить еще быстрее, вы может быть успеете оскорбить еще больше участников за один день. Еще раз убеждаюсь в правильности решения.
...
Рейтинг: 0 / 0
Проверка строки на cодержание цифр.(Повторно)
    #34535193
Александр GAGADDDOC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо !!!
Вопрос снят !
...
Рейтинг: 0 / 0
Проверка строки на cодержание цифр.(Повторно)
    #34536045
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... вобщем всем всё понятно

Именно!
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проверка строки на cодержание цифр.(Повторно)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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