powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Таймер на час
25 сообщений из 29, страница 1 из 2
Таймер на час
    #36957729
MasterWEB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите пожалуйста, как сделать чтобы программа находилась в режиме ожидания заданное время, например 1 час? Sleep просто "подвесит" программу а таймер не работает с большими значениями секунд.. Есть выход их этой ситуации?
...
Рейтинг: 0 / 0
Таймер на час
    #36957733
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
просто заведи переменную типа date, которую заполни стратовым временем, потом в цикле проверяй наступило ли нужное тебе время от стартового
...
Рейтинг: 0 / 0
Таймер на час
    #36957800
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterWEBПодскажите пожалуйста, как сделать чтобы программа находилась в режиме ожидания заданное время, например 1 час? Sleep просто "подвесит" программу а таймер не работает с большими значениями секунд.. Есть выход их этой ситуации?
ну а в чем проблема? Заводи таймер на максимум и перезаводи его, пока требуется.
...
Рейтинг: 0 / 0
Таймер на час
    #36957813
MasterWEB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если делать допустим так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
  

Private Function vBSleep(TmpPause As Long)
  Dim Tim As Long
  Tim = Timer
  Do
  Loop While Tim + TmpPause >= Timer
End Function


то при вызове Call vBSleep(38000) программа просто будет висеть и не отвечать на запросы...
...
Рейтинг: 0 / 0
Таймер на час
    #36957814
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doevents в цикле не забываем
...
Рейтинг: 0 / 0
Таймер на час
    #36957825
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Onedoevents в цикле не забываем
а я вот не люблю такие вещи. Зачем грузить проц пустым циклом целый час. Лучше уж таймер перезаводить.
...
Рейтинг: 0 / 0
Таймер на час
    #36957832
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProKonst_Onedoevents в цикле не забываем
а я вот не люблю такие вещи. Зачем грузить проц пустым циклом целый час. Лучше уж таймер перезаводить.

я тоже не люблю
...
Рейтинг: 0 / 0
Таймер на час
    #36957849
MasterWEB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProKonst_Onedoevents в цикле не забываем
а я вот не люблю такие вещи. Зачем грузить проц пустым циклом целый час. Лучше уж таймер перезаводить.
А как перезаводить правильно, нет примерчика случайно? :)
...
Рейтинг: 0 / 0
Таймер на час
    #36957853
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterWEBShocker.Proпропущено...

а я вот не люблю такие вещи. Зачем грузить проц пустым циклом целый час. Лучше уж таймер перезаводить.
А как перезаводить правильно, нет примерчика случайно? :)
Код: plaintext
i=i+ 1 
как только i достигнет нужного значения - значит нужное вам событие наступило
...
Рейтинг: 0 / 0
Таймер на час
    #36958301
MasterWEB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все получилось ) Вопрос есть такой, как прибавить к Label4
Label4.Caption = Format(Time, "HH:mm:ss")
еще час двадцать минут например? Спасибо!
...
Рейтинг: 0 / 0
Таймер на час
    #36958329
MasterWEB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DateAdd("n", 1 * 60 + 20, Now)
...
Рейтинг: 0 / 0
Таймер на час
    #36959230
MasterWEB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
dtNow = Now 
Label5.Caption = DateAdd("n",  1  *  1 , Now) 'плюсуется 1 мин к текущему времени
Label9.Caption = Format(Label5.Caption, "dd.mm.yyyy") 
Label5.Caption = Format(Label5.Caption, "hh:mm:ss") 
Label3.Caption = Format(dtNow, "hh:mm:ss")  'текущая дата
Label8.Caption = Format(dtNow, "dd.mm.yyyy")  'текущее время
dtComp = CDate(Label9.Caption)
dtCompp = CDate(Label8.Caption)
While dtCompp <= dtComp And Label3.Caption < Label5.Caption
DoEvents
Wend
MsgBox "Выполнено"

Вопрос. Как правильно реализовать сравнение даты и времени одновременно?
Не могу додумать как сделать условие ( 16.10.2010 12:10:00 и 17.10.2010 11:10:00 ) чтобы правильно сравнивались. В моем примере постоянно идет сравнение с текущей датой и временем.
...
Рейтинг: 0 / 0
Таймер на час
    #36959233
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
datediff()
...
Рейтинг: 0 / 0
Таймер на час
    #36959251
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterWEB,

Код: plaintext
dtComp = CDate(Label9.Caption)

вообще-то это плохая идея.
Ибо на машине с другими региональными установками можно напороться на путаницу месяца и дня (получить 1-е мая вместо 5-го января)
...
Рейтинг: 0 / 0
Таймер на час
    #36959271
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterWEB
Вопрос. Как правильно реализовать сравнение даты и времени одновременно?

Костя неверно понял твой вопрос.
Дату и время можно просто тупо сложить:
Код: plaintext
dtComp = CDate(Label9.Caption)+CDate(Label8.Caption)
но это не отменяет того, что я написал выше.
со временем будет все нормально, а с датой может возникнуть путаница.
...
Рейтинг: 0 / 0
Таймер на час
    #36959278
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
datediff позволяет сравнивать как в минутах, так и в часах, днях и тд
я не понимаю зачем вы даты в label-ы засовываете , а затем пытаетесь их сравнивать. у вас же есть переменная , где уже храниться время старта, ну так и сравнивайте с относитедльным интервалом
...
Рейтинг: 0 / 0
Таймер на час
    #36959300
MasterWEB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Onedatediff позволяет сравнивать как в минутах, так и в часах, днях и тд
я не понимаю зачем вы даты в label-ы засовываете , а затем пытаетесь их сравнивать. у вас же есть переменная , где уже храниться время старта, ну так и сравнивайте с относитедльным интервалом
Лэйблы нужны для наглядного отображения их же можно использовать и в коде )
Код: plaintext
1.
2.
Dim retval
retval = DateDiff("d", Label3.Caption, Label9.Caption)
MsgBox retval
40498 вернул
Это будет разница в днях,
не пойму как мне сразу сравнить даты и время (
Что то никак не разберусь.
...
Рейтинг: 0 / 0
Таймер на час
    #36959361
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterWEBне пойму как мне сразу сравнить даты и время (
Что то никак не разберусь.

Что имеется ввиду под "сравнить"
больше-меньше? Или какой результат надо получить?
...
Рейтинг: 0 / 0
Таймер на час
    #36959374
MasterWEB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Что имеется ввиду под "сравнить"
больше-меньше? Или какой результат надо получить?

Есть 16.10.2010 13:00:00 (сегодня) и есть 17.10.2010 12:00:00 (завтра) Цикл должен проверять не наступила ли эта дата и время. Как только наступила - сообщение.
...
Рейтинг: 0 / 0
Таймер на час
    #36959380
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterWEBShocker.Pro
Что имеется ввиду под "сравнить"
больше-меньше? Или какой результат надо получить?

Есть 16.10.2010 13:00:00 (сегодня) и есть 17.10.2010 12:00:00 (завтра) Цикл должен проверять не наступила ли эта дата и время. Как только наступила - сообщение.
ну так это простое большеменьше, не нужен никакой datediff, о чем я и говорю, Костя просто не понял вопрос.

А как склеить дату и время - я написал выше
...
Рейтинг: 0 / 0
Таймер на час
    #36959386
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterWEBЛэйблы нужны для наглядного отображения их же можно использовать и в коде )
тогда форматируйте дату в виде "yyyy-mm-dd" тогда не будет проблем с локализацией
...
Рейтинг: 0 / 0
Таймер на час
    #36959393
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я к тому клоню, что сравнивать надо переменные типа date. а отображать можно как угодно
...
Рейтинг: 0 / 0
Таймер на час
    #36959402
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneя к тому клоню, что сравнивать надо переменные типа date. а отображать можно как угодно
ну да
преобразование в дату я у автора видел, а вот этот бред
Код: plaintext
And Label3.Caption < Label5.Caption
не заметил
...
Рейтинг: 0 / 0
Таймер на час
    #36959418
MAYAKOV_SV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterWEB, такое потоками делается:

1. В модуле:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Declare Function CreateThread Lib "kernel32" (lpThreadAttributes As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadID As Long) As Long
Declare Function TerminateThread Lib "kernel32" (ByVal hThread As Long, ByVal dwExitCode As Long) As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private hThread As Long, hThreadID As Long
Public Sub AsyncThread()
    'к примеру, 5 секунд работает
    Sleep  5000 
    hThread =  0 
    CloseHandle hThread
    ' Тут мы что-то делаем
End Sub

Public Sub InitThread()
 hThread =  0 
End Sub

Public Sub CloseThread()
 If hThread <>  0  Then
  TerminateThread hThread,  0 
  CloseHandle hThread
 End If
End Sub

Public Sub CreateNewThread()
 hThread = CreateThread(ByVal  0 &, ByVal  0 &, AddressOf AsyncThread, ByVal  0 &, ByVal  0 &, hThreadID)
End Sub

2. На форме:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private Sub Command1_Click()
 CreateNewThread
End Sub

Private Sub Form_Load()
 InitThread
End Sub

Private Sub Form_Unload(Cancel As Integer)
  CloseThread
End Sub
...
Рейтинг: 0 / 0
Таймер на час
    #36959643
Skiffspb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эээ, может я чего не понимаю, но таймер на любое время делался всегда так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Sub Timer1_Timer()
Static bMin As Byte

If bMin =  60  Then
    i =  0 
    MySub
Else
    bMin = bMin +  1 
End If
End Sub

Private Sub MySub()

End Sub

Без извратов с вычислением разницы времени и проч. Нет?
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Таймер на час
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]