Пауза на VB

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
learnet
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 18.04.2005 (Пн) 8:12

Пауза на VB

Сообщение learnet » 19.04.2005 (Вт) 19:13

Как сделать паузу, чтоб скажем в мс её можно было задавать

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 19.04.2005 (Вт) 19:15

Код: Выделить всё
'This project needs a button
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Command1_Click()
    'KPD-Team 1998
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    Me.Caption = "Your system will sleep 5 sec."
    'Sleep for 5000 milliseconds
    Sleep 5000
    Me.Caption = ""
End Sub
Private Sub Form_Load()
    Me.Caption = ""
    Command1.Caption = "Sleep ..."
End Sub

kirrun
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 06.04.2005 (Ср) 15:41
Откуда: Питер

Сообщение kirrun » 19.04.2005 (Вт) 19:15

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

Не самый лучший вариант...
"Единственный безопасный компьютер - это тот, который выключен из электросети, закрыт в сейфе, который зарыт 20 футов под землей в засекреченной местности. И то я не уверен относительно его безопасности."
(Деннис Хьюджес, ФБР)

kirrun
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 06.04.2005 (Ср) 15:41
Откуда: Питер

Сообщение kirrun » 19.04.2005 (Вт) 19:18

Amed писал(а):
Код: Выделить всё
'This project needs a button
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Command1_Click()
    'KPD-Team 1998
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    Me.Caption = "Your system will sleep 5 sec."
    'Sleep for 5000 milliseconds
    Sleep 5000
    Me.Caption = ""
End Sub
Private Sub Form_Load()
    Me.Caption = ""
    Command1.Caption = "Sleep ..."
End Sub


Имхо немного не то... Это штука прогу подвешивает, а надо паузу сделать...
"Единственный безопасный компьютер - это тот, который выключен из электросети, закрыт в сейфе, который зарыт 20 футов под землей в засекреченной местности. И то я не уверен относительно его безопасности."
(Деннис Хьюджес, ФБР)

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 19.04.2005 (Вт) 21:08

kirrun писал(а):Имхо немного не то... Это штука прогу подвешивает, а надо паузу сделать...

А что такое пауза, по вашему?
Она замораживает тред (thread), а не вешает программу.

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

Faust
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 649
Зарегистрирован: 29.12.2003 (Пн) 13:38
Откуда: лаборатория

Сообщение Faust » 19.04.2005 (Вт) 21:16

Может быть, человек хочет дать юзеру время полюбоваться результатами, а потом работать дальше? Тогда где-то так:
Код: Выделить всё
Dim t as single
t=timer
while timer-t<10
Doevents
wend
Листинги не горят!

kirrun
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 06.04.2005 (Ср) 15:41
Откуда: Питер

Сообщение kirrun » 19.04.2005 (Вт) 21:45

xolod писал(а):
kirrun писал(а):Имхо немного не то... Это штука прогу подвешивает, а надо паузу сделать...

А что такое пауза, по вашему?
Она замораживает тред (thread), а не вешает программу.


П онашему пауза - промежуток времени между выполнением кода. А Sleep именно вешает программу. Убедится легко: замораживаем, разворачиваем любое окно, потом сворачиваем его. И убеждаемся, что прога в чистом виде поисла. Да и еще минус: Все команды, выполненые (кнопки, нажатые) потом выполняются.
"Единственный безопасный компьютер - это тот, который выключен из электросети, закрыт в сейфе, который зарыт 20 футов под землей в засекреченной местности. И то я не уверен относительно его безопасности."
(Деннис Хьюджес, ФБР)

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 19.04.2005 (Вт) 23:10

kirrun писал(а):
xolod писал(а):
kirrun писал(а):Имхо немного не то... Это штука прогу подвешивает, а надо паузу сделать...

А что такое пауза, по вашему?
Она замораживает тред (thread), а не вешает программу.


П онашему пауза - промежуток времени между выполнением кода. А Sleep именно вешает программу.

В окнах все программы работают за счет событий и сообщений (по крайней мере те, которые имеют форму). Если ты говоришь программе "спать минуту" - она это честно делает (т.е. не реагирует на сообщения и не генерирует событий). А ты чего хотел?
А вот если ты хотел сделать просто остановку выполнения основного когда программы, но при этом обрабатывать события от некоторых контролов - это уже другое.
Это Ж-ж-ж-ж неспроста (с) Винни-Пух

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 20.04.2005 (Ср) 0:05

Да он ничего не хотел. Он только догадки строит.
Это learnet'у надо что-то конкретное, просто объяснение не совсем развернутое дал.

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

learnet
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 18.04.2005 (Пн) 8:12

Сообщение learnet » 20.04.2005 (Ср) 4:24

Ruslan Demidow писал(а):
kirrun писал(а):
xolod писал(а):
kirrun писал(а):А вот если ты хотел сделать просто остановку выполнения основного когда программы, но при этом обрабатывать события от некоторых контролов - это уже другое.


Вот мне так и надо
:(

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 20.04.2005 (Ср) 4:43

Тогда есть мнение о неправильной организации программы вообще :)
Чё она делает?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

kirrun
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 06.04.2005 (Ср) 15:41
Откуда: Питер

Сообщение kirrun » 20.04.2005 (Ср) 14:10

Я ж уже предложил, правда не лучший вариант (тот, что с таймером)...
"Единственный безопасный компьютер - это тот, который выключен из электросети, закрыт в сейфе, который зарыт 20 футов под землей в засекреченной местности. И то я не уверен относительно его безопасности."
(Деннис Хьюджес, ФБР)

learnet
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 18.04.2005 (Пн) 8:12

Сообщение learnet » 26.04.2005 (Вт) 20:12

GSerg писал(а):Тогда есть мнение о неправильной организации программы вообще :)
Чё она делает?


В общем мнение было правильное Спасибо за беспокойство, НО, всеравно неужели нет паузы обыкновенной????

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 26.04.2005 (Вт) 20:18

Обыкновенной - нет.
Последний раз редактировалось Amed 26.04.2005 (Вт) 20:25, всего редактировалось 1 раз.

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 26.04.2005 (Вт) 20:20

Так норм ? :) :wink:
Код: Выделить всё
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Form_Activate()
MsgBox "Пауза началась"
Pause 1000
MsgBox "Пауза закончилась"
End Sub
Sub Pause(PauseTime As Long)
Dim TM As Long
TM = GetTickCount
Do
If GetTickCount - TM > PauseTime Then
   Exit Do
End If
Sleep 2
DoEvents
Loop
End Sub

learnet
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 18.04.2005 (Пн) 8:12

Сообщение learnet » 26.04.2005 (Вт) 20:35

Хм, работает спасибо!!!!!!!!!!!!

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 26.04.2005 (Вт) 20:36

ALX_2002:
А теперь проверь загрузку процессора. 100%
А вот у таймеров такого эффекта нет :)
Моду создают модоки, а распространяют модозвоны.

kirrun
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 06.04.2005 (Ср) 15:41
Откуда: Питер

Сообщение kirrun » 26.04.2005 (Вт) 20:40

Это да... Вывод: kirrun прав с самого начала. Надо делать таймер =)
"Единственный безопасный компьютер - это тот, который выключен из электросети, закрыт в сейфе, который зарыт 20 футов под землей в засекреченной местности. И то я не уверен относительно его безопасности."
(Деннис Хьюджес, ФБР)

learnet
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 18.04.2005 (Пн) 8:12

Сообщение learnet » 26.04.2005 (Вт) 20:49

У меня почемуто нет такой загрузки
Может у меня ООООчень крутой комп :)
До 2 % поднялась мах

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 26.04.2005 (Вт) 22:22

2 hCORE: проверил, и желаю проверить и тебе ;) :D

у меня даже на процент не грузит проц :)
Последний раз редактировалось ALX_2002 26.04.2005 (Вт) 22:26, всего редактировалось 1 раз.

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 26.04.2005 (Вт) 22:24

Хотите таймер вот вам реальный таймер, который не нужно на форму пихать

пример с www.allapi.net

Код: Выделить всё
' This project requires a Form and a Module
' The Form must have two command buttons (Command1
' and Command2) on it.
'
'In a form
Private Declare Function CreateTimerQueue Lib "kernel32.dll" () As Long
Private Declare Function CreateTimerQueueTimer Lib "kernel32.dll" (ByRef phNewTimer As Long, ByVal TimerQueue As Long, ByVal Callback As Long, ByVal Parameter As Long, ByVal DueTime As Long, ByVal Period As Long, ByVal Flags As Long) As Long
Private Declare Function DeleteTimerQueue Lib "kernel32.dll" (ByVal TimerQueue As Long) As Long
Private Declare Function DeleteTimerQueueTimer Lib "kernel32.dll" (ByVal TimerQueue As Long, ByVal Timer As Long, ByVal CompletionEvent As Long) As Long
Private hQueue As Long
Private hTimer As Long
Private Sub Form_Load()
    'KPD-Team 2002
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@allapi.net
    hQueue = CreateTimerQueue()
    Command1.Caption = "Start"
    Command2.Caption = "Stop"
End Sub
Private Sub Form_Unload(Cancel As Integer)
    DeleteTimerQueue hQueue
End Sub
Private Sub Command1_Click()
    If hTimer = 0 Then
        CreateTimerQueueTimer hTimer, hQueue, AddressOf TimerCallBack, ByVal 0&, 0, 1000, 0
    End If
End Sub
Private Sub Command2_Click()
    If hTimer <> 0 Then
        DeleteTimerQueueTimer hQueue, hTimer, ByVal 0&
        hTimer = 0
    End If
End Sub

'In a module
Public Sub TimerCallBack(ByVal lpParameter As Long, ByVal TimerOrWaitFired As Long)
    Debug.Print "Timer callback..."
End Sub


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 84

    TopList