Заставить работать цикл с интервалом...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Armageddon[SN]
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 12.02.2004 (Чт) 0:03

Заставить работать цикл с интервалом...

Сообщение Armageddon[SN] » 12.02.2004 (Чт) 17:14

Как заставить работать цикл с интервалом? ( то есть
for A = x to y
[тело]......
.........
.........
чтобы цикл для А=x и для А=x+1 выполнялся через время z?)

Unstat
Реальный басяк
Реальный басяк
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 07.01.2004 (Ср) 22:19
Откуда: Нижний Новгород

Сообщение Unstat » 12.02.2004 (Чт) 19:46

Если тебе надо что бы тело цикла выполнилось потом еще раз через интервал времени z то почему бы тебе не использовать таймер.

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 12.02.2004 (Чт) 20:23

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

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

Сообщение Amed » 12.02.2004 (Чт) 22:28

Код: Выделить всё
Private Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long
Private Const DELAY As Long = 50 'задержка в миллисекундах

Private Sub MyCycle()
Dim x As Integer, i As Integer, j As Integer
For x = 1 To 100

i = GetTickCount

Do
If i - j > DELAY Then Exit Do
DoEvents
Loop

j = GetTickCount

Next x
End Sub


Не проверял, но работать должно...

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 18.02.2004 (Ср) 2:55

Чест6но говоря я не читал всего, так-что не бейте!!!

А ты попробуй цыкл в цыкле, например так!
Код: Выделить всё
for a=1 to 1000
   for z=1 to 'сколько тебе надо
   next z
'тело твоего цыкла
next a


sanches
El compa&#241;ero
El compa&#241;ero
 
Сообщения: 823
Зарегистрирован: 09.01.2003 (Чт) 3:58
Откуда: Р_О_С_С_И_Я ! (Питер)

Сообщение sanches » 18.02.2004 (Ср) 7:58

Ramzes писал(а):А ты попробуй цыкл в цыкле, например так!


это извращение ... (хотя сам когда-то еще на QBasic такое вытворял. даже замерял,сколькоо итераций должно быть в пустом цикле для "паузы" в одну секунду)
Изображение

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

Сообщение Amed » 18.02.2004 (Ср) 8:11

Потому-то это и извращение: если у юзера стоит 386DX :roll:, то миллион итераций пустого цикла будут выполняться, скажем, секунду. А у владельца Pentium IV-3600 - одну тысячную долю секунды... Лучше юзать Sleep...

Lobo
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 08.01.2004 (Чт) 16:49
Откуда: Таллинн, Эстония

Сообщение Lobo » 18.02.2004 (Ср) 11:09

Кроме того, Sleep не загружает процессор.
Изображение Вопросы - рёбрами!

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 19.02.2004 (Чт) 1:00

Amed писал(а):Потому-то это и извращение: если у юзера стоит 386DX :roll:, то миллион итераций пустого цикла будут выполняться, скажем, секунду. А у владельца Pentium IV-3600 - одну тысячную долю секунды... Лучше юзать Sleep...


Ну как тебе сказать, помнится в QB я извратился по полной во всех задержках я ставил фиктивное значение например:
Код: Выделить всё
FOR T=1 TO X*SETUP: NEXT T
'где Х - это число на которое я ориентировался когда писал программу (при SETUP=1)

В самом начале проги следовала константа в которой было время, за которое у меня на компе проходит определенный цикл, например до от 1 до 20000. Далее следовал такой же цикл и измерение времени, после чего комп принимал решение какое значение присвоить переменной SETUP.

Короче препод мой был в шоке, когда в БАСИКЕ, появилось окошко, типа настройка оборудывания ... потом вывод, например такой
"Данное ПО рассчитано на более мощный компутер. Мы рекомендуем приобрести поновее комп."[b].
Затем новое окно, и
[b]"Программа готовит ПО к работе с вашим ПК..."


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

Так что было бы желание а решить проблему скоростей можно.. в том виде
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

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

Сообщение Amed » 19.02.2004 (Чт) 5:14

:D
Оригинальный способ... Но, повторюсь, он довольно кривой :roll: и, имхо, методологически правильнее юзайть Sleep :)

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 20.02.2004 (Пт) 0:35

Да SLEEP это конечно хорошо, но если конечно у него не интервал например 2е суток ....
Тут я думаю ему лучше писать инфу о том когда запустить прогу в файл ... а потом проверять программой работающей в фоновом режиме...


Вообщем бескрайнее поле для извращений
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)


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

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

Сейчас этот форум просматривают: Yandex-бот и гости: 21

    TopList