Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VB 6.0

Ответить
Настройки темы
VB 6.0

Новый участник


Сообщения: 48
Благодарности: 2

Профиль | Отправить PM | Цитировать


Помогите решить проблему: Пишу программу на VB 6.0. Будет висеть в памяти и через определенные интервалы будет выполнять некоторые действия. Для задания этих интервалов на форму повесил элемент "таймер". Но у него свойство "Interval" максимум 65.5 сек. А надо минут 10-15... Подскажите, как это реализовать.

-------
Реальный мир - это илюзия,  вызванная отсутстствием алкоголя.


Отправлено: 11:14, 06-05-2003

 

Пользователь


Сообщения: 61
Благодарности: 0

Профиль | Отправить PM | Цитировать


Не знаю как на VB, но в теории попытайся вставить пустой цикл.
Типа банальный QBasic:

for i=1 to 1000000
i=i+1
next i

-------
Жизнь без пива - существование!!!


Отправлено: 01:44, 07-05-2003 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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

gonsales


Сообщения: n/a

Профиль | Цитировать


С пустым циклом может быть проблема, чуть-чуть измени производительность и интервал времени изменится, тем более, что второе число в цикле будет очень большим для 10-15 минут и погрешность может накапливаться.

Можно попробовать использовать счётчик и условие.

Когда таймер срабатывает инкрементируй счётчик, а затем проверяй его. Как только он превысит требуемое количество (для 10 минут это 10 срабатываний по 60 сек. - расчёт несложный ), обнуляй его и выполняй остальную часть процедуры.

Только не забудь обнулить его перед первым использованием. И главное - переменная счётчик не должна терять значение (это относится к времени жизни переменной).

(Выходит, что и алкоголь иллюзия ? )

Отправлено: 10:30, 07-05-2003 | #3


Старожил


Сообщения: 238
Благодарности: 0

Профиль | Отправить PM | Цитировать


Дополню gonsales
Можно в цикле 10 раз запустить таймер.
Хотя решение достаточно корявое.
Можно попробовать создать потомка TTimer у которого не будет такого ограничения (я думаю это связано с типом данных свойства "Interval"

Отправлено: 06:59, 08-05-2003 | #4

obozrevatel


Сообщения: n/a

Профиль | Цитировать


Ну блин, вы все даете со своими циклами - они же конкретно грузят ЦПУ и как было подмечено полностю зависят от приоритета посталеной задчи - пойди угадай где 10 мин а где 20.
Более изящное и правильное решение - это использовать API функцию Windows - GetTickCount (Private Declare Function GetTickCount Lib "kernel32" () As Long). Она возвращает количество милисекунд (1/1000 секунды), прошедших с момента запуска Windows. Разность показаний до выполнения некоторого кода (проверка нужного условия таймером) и после и будет являться временем, которое ушло на выполнение этого кода. А вот проверять эту расность может таймер через 60 с. - это уже нормально и если условие выполнено (разность>10 мин) то выполняем действия.

Удачи всем.

Отправлено: 09:21, 14-05-2003 | #5


Аватара для IZOprogman

Пользователь


Сообщения: 85
Благодарности: 1

Профиль | Отправить PM | Цитировать


Ещё решение: заводится целая переменная ПЕР, куда накапливаются события таймера; таймер ставится, скажем, на 1 сек: если ПЕР>600 (=10 мин), то {<ДЕЙСТВИЕ>; ПЕР=0}, иначе ПЕР=ПЕР+1;

Отправлено: 21:42, 03-09-2003 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VB 6.0

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено




 
Переход