Пауза при выполнениии кода

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

Пауза при выполнениии кода

Сообщение Alexey-VB » 28.12.2006 (Чт) 10:40

Требуется временная задержка выполнения кода.
Тоесть код должен в одном месте сделать паузу, но при этом должны выполняться и другие функции.
Пробовал вот так:

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

..........
DoEvents
Sleep (5000)
....................

Но в момент паузы вся прога останавливается, а мне нужно что бы только функция была в паузе.

Использование Timer отпадает, так как это будет громоздко. Потому как у меня много таких пауз и в разных функциях.

Плиз хелп.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 28.12.2006 (Чт) 10:47

Тем не менее, либо таймер, либо второй поток.
Lasciate ogni speranza, voi ch'entrate.

Neonikus
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 12
Зарегистрирован: 27.12.2006 (Ср) 20:40
Откуда: KAZAHSTAN-KosTanaY

Сообщение Neonikus » 30.12.2006 (Сб) 20:22

Да лучше всего Таймером 8)

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 30.12.2006 (Сб) 21:35

Народ, не мудрите... Таймеры, потоки... Неужели так сложно сделать это:
Код: Выделить всё


Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function GetTickCount Lib "kernel32" () As Long

Public Sub Wait(dwMilliseconds As Long)
Dim cnt As Long, LTime As Long
LTime = GetTickCount
Do While cnt < dwMilliseconds
DoEvents
cnt = cnt + GetTickCount - LTime
LTime = GetTickCount
Loop
End Sub
Изображение

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

Сообщение hCORe » 31.12.2006 (Вс) 15:20

Несложно то несложно, но вот загрузка ЦП 100%. А так все ничего...
Моду создают модоки, а распространяют модозвоны.

AlexBlack
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 18.07.2005 (Пн) 19:14
Откуда: Киефф, Юкрейн...

Сообщение AlexBlack » 01.01.2007 (Пн) 15:59

тогда так:
Код: Выделить всё

Do
  Sleep( t_dis )
  t = t + t_dis
  If ( t > t_max ) Then Exit Do
Loop
Красный, но студийный.

http://www.rs-creative.com
Alex_Black@rs-creative.com

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 01.01.2007 (Пн) 16:16

AlexBlack писал(а):тогда так:
Код: Выделить всё
Do
  Sleep( t_dis )
  t = t + t_dis
  If ( t > t_max ) Then Exit Do
Loop

И в чём тогда отличие от одного большого слипа?
Изображение

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 01.01.2007 (Пн) 16:53

hCORe
В результате копипаста и последовавшей очистки от табов и пробелов слип потерялся :)
Код: Выделить всё
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function GetTickCount Lib "kernel32" () As Long

Public Sub Wait(dwMilliseconds As Long)
Dim cnt As Long, LTime As Long
LTime = GetTickCount
Do While cnt < dwMilliseconds
DoEvents
Sleep 1
cnt = cnt + GetTickCount - LTime
LTime = GetTickCount
Loop
End Sub
Изображение

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

Сообщение hCORe » 01.01.2007 (Пн) 17:09

Вот-вот, теперь гораздо лучше. Хотя мне все равно больше нравится таймер :)
Моду создают модоки, а распространяют модозвоны.

AntonGV
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 24.05.2006 (Ср) 12:10
Откуда: г. Пермь

Сообщение AntonGV » 01.01.2007 (Пн) 17:15

Я делал так:
Код: Выделить всё
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub Delay(MilliSeconds As Long)
Dim old As Single
old = Timer
Do While (Timer - old) < MilliSeconds / 1000
   DoEvents
   Sleep 1
Loop
End Sub

зы. Чуть проще чем у keks-n
Если долго мучиться, что-нибудь получится

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Сообщение JohnK » 03.01.2007 (Ср) 1:16

А если замутить что-то с флагом?
Тоесть в функции где нужна пауза:

Код: Выделить всё
...
if Delay_Flag then exit sub (function)
...


А потом, смотря по какому условию у тебя идет пауза:

1) можно по таймеру
Код: Выделить всё
Sub Timer1() ' Интервал 1000
nCount=nCount+1
if nCount>60 then
  nCount=0
  Delay_Flag= not Delay_Flag
end if
....


2) Вручную
Код: Выделить всё
Sub Command_Click ' Кнопка Пауза
  Delay_Flag= not Delay_Flag
...

SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 108

    TopList