• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Vb

  • Автор темы aNOOBis
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

aNOOBis

(Переменные объявил)

Private Sub cmd1_Click()
If cmdklick = 1 Then
cmdklick = 0
Else
cmdklick = 1
End If
End Sub

Public Sub pusk ()
If cmdklick = 1 Then
Text1.Text = "Пуск"
End If
End Sub

Текстовое поле никак не реагирует на процедуру pusk
тоже самое происходит и с лэйблами, в чем дело? где ошибка?
 
P

Pasha

Для: aNOOBis
Как именно не реагирует? Текст не меняется при клике на cmd1?
 
A

aNOOBis

<!--QuoteBegin-Pasha+29:05:2007, 14:21 -->
<span class="vbquote">(Pasha @ 29:05:2007, 14:21 )</span><!--QuoteEBegin-->Как именно не реагирует? Текст не меняется при клике на cmd1?
[snapback]67479" rel="nofollow" target="_blank[/snapback]​
[/quote]
Да, поидее cmdklick = 1 кнопку нажали, то при нажатии на cmd1 дожна среагировать pusk и вывести на text1 слово пуск, но оно ни как выводится(
 
P

Pasha

Тут что-то не то с пониманием
"If cmdklick = 1 Then" не ждет пока cmdklick станет равным 1.
Т.е. фразу "код внутри If условие Then ... End If выполняется когда условие истинно" надо читать как "код внутри If условие Then ... End If выполняется если условие истинно".

Вобщем, напиши
Код:
Private Sub cmd1_Click()
Pusk()
End Sub

Public Sub pusk ()
Text1.Text = "Пуск"
End Sub
и будет тебе счастье.
 
A

aNOOBis

Дело не в самом выводе текста. Я просто хочу понять почему допустим работает такая программа

Код:
Private Sub cmdstart_Click()
If wow = 1 Then
wow = 0
cmdstart.Caption = "Старт"
Else
wow = 1
cmdstart.Caption = "Стоп"
End If
End Sub

Private Sub Timer1_Timer()

If wow = 1 Then
folow
End If
End Sub

Public Sub folow()
Static yahoo
yahoo = yahoo + 1
PB1 = yahoo
End Sub

(где PB1 прогресс бар)

Здесь все работает, а
здесь нет
Код:
Private Sub cmd1_Click()
If cmdklick = 1 Then
cmdklick = 0
Else
cmdklick = 1
End If
End Sub

Public Sub pusk ()
If cmdklick = 1 Then
Text1.Text = "Пуск"
End If
End Sub

Вроде все тоже кроме того, что вместо увеличения прогресс бара идет вывод сообщения. В чем разница?
 
P

Pasha

Разница в том, что в первой программе есть таймер, который вызывает folow если wow=1.
Код:
Private Sub Timer1_Timer()
If wow = 1 Then
folow
End If
End Sub
Т.е. нажали кнопку - wow выставился в 1
...прошло время...
сработал таймер, выполняется Timer1_Timer
wow=1? значит вызываем folow...
...прошло время...
сработал таймер, выполняется Timer1_Timer
wow=1? значит вызываем folow...
...прошло время...
сработал таймер, выполняется Timer1_Timer
wow=1? значит вызываем folow...
 
A

aNOOBis

Т.Е. на значение wow = 1 может сробатывать только таймер? А применять текстам без таймера нельзя?
 
P

Pasha

Timer1_Timer() - это обработчик события OnTimer элемента управления Timer. И он тоже не "срабатывает на wow = 1". Он вызывается системой через одинаковые промежутки времени, а не "висит" на строчке с If.
Представь что программа выполняется построчно. Раз в секунду система передает управление Private Sub Timer1_Timer().
Выполняется строчка If wow = 1 Then. Если wow не равно 1, управление переходит сразу на End If.
Если wow равно 1, то выполняется следующая строчка после Then - "folow".

В начале wow = 0, и при каждом вызове Timer1_Timer строчка между then и end if пропускается.

Потом ты нажимаешь кнопку. wow меняется на 1.
Когда в следующий раз система вызовет Timer1_Timer, то строчка между Then и End If выполнится.

А во втором случае текст меняется в pusk. Т.е. чтобы он поменялся, надо чтобы в другом месте программы было написано "pusk", например в cmd1_Click.

ЗЫ фиговый из меня учитель.
 
A

aNOOBis

Все теперь понял) Огромное спасибо.

ЗЫ эт из меня плохой ученик)

Хех!) У меня еще один вопрос вот команда Int(Rnd * 20) +10
По замыслу ее значения должно быть разным, но при каждом запуске программы произвольного числа она выдает одно и тоже. Почему?
 
P

Pasha

Потому что она генерирует новое число на основе предыдущего. При запуске программы начальное значение одно и то же.
Вызывай Randomize() где-нибудь при загрузке формы, он ининциализирует генератор текущим временем.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!