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

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

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

В смысле?

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

if val(stroka) <> "" then
msgbox("There is number in this string")
End if
...
Рейтинг: 0 / 0
15.05.2007, 09:01
    #34525046
Программист Дёня
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка строки на cодержание цифр.(Повторно)
@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
15.05.2007, 09:56
    #34525192
Александр GAGADDDOC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка строки на cодержание цифр.(Повторно)
>Вроде есть функция IsNumeric в модуле Strings которая TRUE возвращает, если строка из цифр или FALSE.

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

'Провірка на кому
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
15.05.2007, 15:37
    #34526534
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка строки на cодержание цифр.(Повторно)
Что-то не понял, что сделали-то?

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

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

И в любом случае, ваше решение не соответствует заявленной вами же проблеме.
...
Рейтинг: 0 / 0
15.05.2007, 18:18
    #34527273
Программист Дёня
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка строки на cодержание цифр.(Повторно)
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
16.05.2007, 14:43
    #34529394
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка строки на cодержание цифр.(Повторно)
Программист Дёня,

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

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

Успехов.
...
Рейтинг: 0 / 0
16.05.2007, 14:59
    #34529480
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка строки на cодержание цифр.(Повторно)
Код: 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
16.05.2007, 15:09
    #34529526
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка строки на cодержание цифр.(Повторно)
klen_

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

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

Почему ваша функция Variant? Мое утверждение об 1.0 - верно, т.к. Программист Дёня пишет: "..но неужели так сложно создать свою простую функцию проверки строки на то, запись ли это числа..."
...
Рейтинг: 0 / 0
16.05.2007, 15:34
    #34529654
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка строки на cодержание цифр.(Повторно)
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
16.05.2007, 15:36
    #34529667
lena_####
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка строки на cодержание цифр.(Повторно)
Код: 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
16.05.2007, 15:47
    #34529725
Nikz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка строки на cодержание цифр.(Повторно)
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
16.05.2007, 15:53
    #34529750
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка строки на cодержание цифр.(Повторно)
lena_####, да! Я тут пытаюсь сварганить похожее через Like. Но вот Pattern...
...
Рейтинг: 0 / 0
16.05.2007, 16:02
    #34529797
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка строки на cодержание цифр.(Повторно)
Nikz,

Класс!!!

:0)

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

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

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

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

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

Успехов.

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

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

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


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