Как сделать 30 минут

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

Re: Как сделать 30 минут

Сообщение eldar22 » 18.06.2009 (Чт) 22:33

Чё то не работает
Код: Выделить всё
Public Declare Function GetTickCount Lib "kernel32" () As Long
Dim Mytimer As Double


Код: Выделить всё
Private Sub Command1_Click()
Mytimer = GetTickCount + (30 * 60 * 1000)
Timer1.Interval = 1000
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
If GetTickCount >= Mytimer Then
Label1.Visible = False
End If
End Sub

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

Re: Как сделать 30 минут

Сообщение JohnK » 18.06.2009 (Чт) 22:45

Ты 30 минут ждал? :D

Для проверки поставь 1 минуту:
Код: Выделить всё
Mytimer = GetTickCount + 60000)


У меня почему-то работает...
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как сделать 30 минут

Сообщение Хакер » 18.06.2009 (Чт) 22:47

Если человек не читает даже того, что ему пишет IDE, значит он не будет читать и того, что ему напишут здесь? Наверное стоит закрывать тему.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

eldar22
Обычный пользователь
Обычный пользователь
 
Сообщения: 91
Зарегистрирован: 09.09.2008 (Вт) 18:11

Re: Как сделать 30 минут

Сообщение eldar22 » 18.06.2009 (Чт) 22:50

Я имею ввиду что вообще не запускаеться

Ссылаеться на это

Код: Выделить всё
Mytimer = GetTickCount + (30 * 60 * 1000)

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Как сделать 30 минут

Сообщение Viper » 18.06.2009 (Чт) 22:53

eldar22 писал(а):Я имею ввиду что вообще не запускаеться

Ссылаеться на это

Код: Выделить всё
Mytimer = GetTickCount + (30 * 60 * 1000)
Для разнообразия подумай сам хотя бы один разЮ тем более, что IDE тебе прямым текстом говорит что не так.
Весь мир матрица, а мы в нем потоки байтов!

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

Re: Как сделать 30 минут

Сообщение JohnK » 18.06.2009 (Чт) 22:55

Что значит ссылается
на это

Бери словарь и переводи, раз учебники английского прокурил.
А если пишет overflow, то умножь за 2 приема, или используй константу.
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

eldar22
Обычный пользователь
Обычный пользователь
 
Сообщения: 91
Зарегистрирован: 09.09.2008 (Вт) 18:11

Re: Как сделать 30 минут

Сообщение eldar22 » 18.06.2009 (Чт) 23:12

А проверка на минуту

Код: Выделить всё
Mytimer = GetTickCount + 60000


После запуска нажимаю кнопку и через 5 секунд происходит нужное мне действие label1.visible=false

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

Re: Как сделать 30 минут

Сообщение JohnK » 18.06.2009 (Чт) 23:22

А ты часом нолик не пропустил ? 60000. И таймер выключай после срабатывания условия, чтобы зря не молоти\проверял.
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

eldar22
Обычный пользователь
Обычный пользователь
 
Сообщения: 91
Зарегистрирован: 09.09.2008 (Вт) 18:11

Re: Как сделать 30 минут

Сообщение eldar22 » 18.06.2009 (Чт) 23:27

Нет нолик не пропустил
И даже с ноликом где то 5 секунд и срабатывает действие label1.visible=false

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

Re: Как сделать 30 минут

Сообщение JohnK » 18.06.2009 (Чт) 23:30

Только что проверил, работает с точностью до секунды. Просто нет слов!
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

eldar22
Обычный пользователь
Обычный пользователь
 
Сообщения: 91
Зарегистрирован: 09.09.2008 (Вт) 18:11

Re: Как сделать 30 минут

Сообщение eldar22 » 18.06.2009 (Чт) 23:35

Посмотри
Вложения
1.rar
(1.35 Кб) Скачиваний: 41

HiddenMan
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 13.12.2006 (Ср) 20:58
Откуда: от туда

Re: Как сделать 30 минут

Сообщение HiddenMan » 19.06.2009 (Пт) 0:30

код рабочий. это точно.
Код: Выделить всё
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private MT As Long

Private Sub Command1_Click()
MT = GetTickCount + 10000
Timer1.Interval = 1000
Timer1.Enabled = True
End Sub

Private Sub Form_Load()
Timer1.Enabled = False
End Sub

Private Sub Timer1_Timer()
If GetTickCount >= MT Then
    Timer1.Enabled = False
    Label1.Visible = False
End If
End Sub
С уважением, я.

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Re: Как сделать 30 минут

Сообщение awl100Alex » 19.06.2009 (Пт) 10:10

dcdlab в самом начале предложил самый простой вариант, процессор не загружается, никаких лишних модулей и tik выносить куда-либо необязательно. Зачем же тогда вам Static???
Код: Выделить всё
Private Sub Form_Load()
Timer1.Interval = 60000
Timer1.Enabled = True
Label1.Caption = Time 'Время старта
End Sub

Private Sub Timer1_Timer()
Label2.Caption = Time 'Текущий счет времени
Static tik As Byte
tik = tik + 1
If (tik Mod 30) = 0 Then
  MsgBox "30 минут прошло"
  Timer1.Enabled = False: tik = 0 'Сброс...
End If
End Sub

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Как сделать 30 минут

Сообщение Денис » 19.06.2009 (Пт) 12:31

If (tik Mod 30) = 0 Then

Я конечно понимаю, что с нулём сравнивать быстрее, но из чтения топика видно, что автор — оголтелый новичок. Включите свою преподавательскую жилку!

If tik = 30 Then
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

eldar22
Обычный пользователь
Обычный пользователь
 
Сообщения: 91
Зарегистрирован: 09.09.2008 (Вт) 18:11

Re: Как сделать 30 минут

Сообщение eldar22 » 19.06.2009 (Пт) 12:34

Всем спасибо за участие и ответы (Особенно Хакеру)
С уважением оголтелый новичок :D

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

Re: Как сделать 30 минут

Сообщение alibek » 19.06.2009 (Пт) 12:36

Денис писал(а):If (tik Mod 30) = 0 Then
If tik = 30 Then

Это не равнозначная замена. Первый фрагмент делает не то, что делает второй фрагмент.
Lasciate ogni speranza, voi ch'entrate.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Как сделать 30 минут

Сообщение Денис » 19.06.2009 (Пт) 12:58

C учетом Timer1.Enabled = False то же самое!!
Давай не будем оффтоп разводить?
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Как сделать 30 минут

Сообщение Viper » 19.06.2009 (Пт) 13:09

Денис писал(а):C учетом Timer1.Enabled = False то же самое!!
Давай не будем оффтоп разводить?
Совершенно не тоже самое! Второй фрагмент сработает только один раз, а если понадобиться повторно запустить таймер, то он будет работать до бесконечности.
Весь мир матрица, а мы в нем потоки байтов!

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Как сделать 30 минут

Сообщение Денис » 19.06.2009 (Пт) 13:44

>повторно запустить таймер
>работать до бесконечности
>до бесконечности
Тогда приведенный вариант с Mod — вообще ошибочен. Условием задачи работа до бесконечности не предусматривается. :roll:
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Как сделать 30 минут

Сообщение Viper » 19.06.2009 (Пт) 17:40

Денис писал(а):>повторно запустить таймер
>работать до бесконечности
>до бесконечности
Тогда приведенный вариант с Mod — вообще ошибочен. Условием задачи работа до бесконечности не предусматривается. :roll:
Вариант с Mod будет срабатывать каждый раз по истечении 30 минут. Причем можно как остановить таймер по истечении 30 минут так и продолжить его работу дальше. Вариант с простым сравнением за время выполнения программы сработает один раз. И все, статическая переменая внутри обработчика события второй раз равной 30 не будет.
Весь мир матрица, а мы в нем потоки байтов!

dcdlab
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 04.06.2009 (Чт) 2:14

Re: Как сделать 30 минут

Сообщение dcdlab » 23.06.2009 (Вт) 10:49

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

dim tik as integer
dim interv as byte
dim intervsec as integer

Private sub Form_Load()
interv = 30 ' в минутах интервал повторения
intervsec =  interv * 60
timer1.interval = 1000
tik = 0
End Sub

Private Sub Timer1_Timer()
tik = tik + 1
  if tik = intervsec then
    msgbox "hello!!" ' То, что тебе нужно
    tik = 0
  end if
end sub



Или:
Код: Выделить всё

dim tik as byte
dim interv as byte
dim intervsec as integer

Private sub Form_Load()
interv = 30 ' в минутах интервал повторения
intervsec =  interv * 60
timer1.interval = 1000
tik = 0
End Sub

Private Sub Timer1_Timer()
tik = tik + 1
if tik = 32767 then tik = -1 ' чтобы не выйти за пределы типа
  if (tik mod intervsec) = 0 then
    msgbox "hello!!" ' То, что тебе нужно
  end if

end sub


Варианты без использования таймера типа:
Код: Выделить всё
do
tm = timer
  do while (timer - tm < intsec)
    doevents
  loop
  'То что тебе нужно.
loop

не оптимальны, т.к. сильно загружают процессор.

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

Re: Как сделать 30 минут

Сообщение JohnK » 23.06.2009 (Вт) 13:57

dcdlab Это все неточные варианты. Все зависит от загрузки системы. Проверено. Вариант с GetTickCount + Timer более точный.
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

Пред.

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

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

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

    TopList  
cron