Вопрос № 47115: Спасиба !
За пример ( проверить сторку на наличие цыфр) Вопрос снят.
Public Function IsDigits(str As String) As Boolean
Dim i As Integer
IsDigits=True
For i = 1 To Len(str)
If Not IsNumeric(Mid$(str, i, 1)) Then IsDigits...Вопрос № 47137: Как проверить
на ошибку весь проэкт ?
Так проверяю на ошибки один модуль , а как весь проэкт ?
Private Sub a11_Click(Index As Integer)
On Error GoTo EL
....
....
....
EL:
LE.Caption = Err.Description
If Err....
Вопрос № 47.115
Спасиба !
За пример ( проверить сторку на наличие цыфр) Вопрос снят.
Public Function IsDigits(str As String) As Boolean
Dim i As Integer
IsDigits=True
For i = 1 To Len(str)
If Not IsNumeric(Mid$(str, i, 1)) Then IsDigits=False
Next
End Function
Отвечает: Филатов Евгений Геннадьевич
Здравствуйте, Гробенюк Александр Александрович!
Как вариант проверка содержимого строки на наличие нескольких введенных чисел. Для проверки в новом проекте на форме помещаем
Text1 со свойством MultiLine=False и Label1 со свойством WordWrap=True. В код формы помещаем код из приложения и запускаем.
При вводе числа отделяются одинарными пробелами. Можно вставить проверку и удаление повторяющихся пробелов. После ввода строки
чисел нажать ENTER, внизу в столбик появятся числа либо текст <не число> в случае, если один из наборов символов введен
с ошибкой.
Отвечает: Залетин Виталий Викторович (мь!тарь)
Здравствуйте, Гробенюк Александр Александрович!
Понимаю, что немного не в тему, но предлагаю небольшой бенчмарк, который покажет, что в больших строках Ваш алгоритм притормозит:
Private Declare Function timeGetTime Lib "winmm" () As Long
Dim i As Long
Dim t As Long
Sub ee()
Dim s As String
Dim IsDigit As Boolean
'////////////////////////////////////////////////////////
'Мой способ
t = timeGetTime()
For i = 0 To 9
IsDigit = (InStr(1, s, CStr(i)) > 0)
Next i
MsgBox "IsDigit=" & IsDigit & vbCrLf & _
"Time=" & CStr(timeGetTime() - t)
End Sub
Время сканирования всей строки посимвольно и время проверки на существование одной из 10 цифр, как видите несколько отличается.
У меня в вордовском VBA время такое: Ваш алгоритм 3 мс., мой алгоритм - 0 мс.
Я понимаю, в реальной жизни такаЯ ситуация может и не встретиться, но почему бы не оптимизировать алгоритм, когда он на это
так и напрашивается? Бейсик тем и хорош, что позволяет развить неплохой стиль программирования.
--------- Учиться никогда не поздно. Особенно программированию!
Так проверяю на ошибки один модуль , а как весь проэкт ?
Private Sub a11_Click(Index As Integer)
On Error GoTo EL
....
....
....
EL:
LE.Caption = Err.Description
If Err.Description <> "" Then MsgBox "Ошибка !", vbExclamation, " "
Exit Sub
End Sub
Отвечает: Александр Шевченко
Здравствуйте, Гробенюк Александр Александрович!
Никак нельзя. В VB 6 вообще скудная обработка ошибок :(.
Ответ отправил: Александр Шевченко
(статус: 5-ый класс)
Ответ отправлен: 23.06.2006, 14:11
Отвечает: Залетин Виталий Викторович (мь!тарь)
Здравствуйте, Гробенюк Александр Александрович!
Расставьте везде On Error Goto... (в каждой процедуре или функции, где хотябы теоретически может возникнуть ошибка), и, конечно,
Option Explicit в начале любого модуля - вот об этом никогда нельзя забывать.
--------- Учиться никогда не поздно. Особенно программированию!