Обнаружение отмены, нажимаемой в VB6 InputBox - PullRequest
3 голосов
/ 01 января 2012

Я создаю приложение VB, которое принимает числа в начале. Я хочу иметь возможность выйти, если пользователь нажимает кнопку отмены в любом из полей ввода. Код:

Private Sub Command1_Click()
Dim a, b, c, d As Integer
Dim response As Integer
Dim a1, b1, c1, d1 As String
a = InputBox("Enter Numerator 1")
b = InputBox("Enter Denominator 1")
c = InputBox("Enter Numerator 2")
d = InputBox("Enter Denominator 2")

a1 = Str(a)
b1 = Str(b)
c1 = Str(c)
d1 = Str(d)

If a1 <> "" And b1 <> "" And c1 <> "" And d1 <> "" Then
'All Actions
...
Else

 response = MsgBox("Are you sure you want to quit?", vbYesNo + vbQuestion, AdditionV1.0")
 If response = vbYes Then
 End
 Else
 Addition.Show
 End If

Я пытался использовать StrPtr, но он все еще не работает. Что происходит, даже если я нажимаю Отмена, он все равно отображает сообщение об ошибке.

Помощь будет по достоинству оценена.

Ответы [ 2 ]

5 голосов
/ 01 января 2012

StrPtr это путь.Поскольку вы не показали соответствующий код, невозможно сказать, что вы сделали неправильно (но в любом случае в коде есть несколько ошибок).В принципе, работает следующее:

Dim a As String
a = InputBox("Enter Numerator 1")
If StrPtr(a) = 0 Then
    ' Nothing was entered.
End If

Я подозреваю, что вы применили проверку к a1 и т. Д. Вместо исходных переменных.Это не только не работает (Str заставляет строку быть ненулевой), но и не имеет смысла: для чего вообще эти переменные?

Кроме того, все ваши объявления переменных неверны.Следующее:

Dim a, b, c, d As Integer

объявляет a, b и c как Variant.Только d будет Integer.По этой и другим причинам (удобочитаемость) никогда не объявляет несколько переменных в одном операторе.Всегда объявляйте их отдельно.Да, и используйте значимые имена.a, b, c, d не помогают.

0 голосов
/ 01 января 2012

Если я правильно понимаю ваш вопрос, вы хотите прекратить обработку в тот момент, когда пользователь нажимает кнопку отмены.

Я бы предложил сделать что-то подобное (обратите внимание, что я изменил переменные на a1, b1, c1,d1 назначения из InputBox):

    Private Sub Command1_Click()
    Dim a, b, c, d As Integer
    Dim response As Integer
    Dim a1, b1, c1, d1 As String

    a1 = InputBox("Enter Numerator 1")
    if (a1 = "")
       exit sub
    endif

    b1 = InputBox("Enter Denominator 1")
    if (b1 = "")
       exit sub
    endif

    c1 = InputBox("Enter Numerator 2")
    if (c1 = "")
       exit sub
    endif

    d1 = InputBox("Enter Denominator 2")
    if (d1 = "")
       exit sub
    endif


    If a1 <> "" And b1 <> "" And c1 <> "" And d1 <> "" Then
    'All Actions
    ...
    Else

     response = MsgBox("Are you sure you want to quit?", vbYesNo + vbQuestion, AdditionV1.0")
     If response = vbYes Then
     End
     Else
     Addition.Show
     End If
...