использование таймера??? HELP!!!

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Vitamin
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 24.10.2003 (Пт) 12:16
Откуда: Barnaul, Russia

использование таймера??? HELP!!!

Сообщение Vitamin » 02.01.2004 (Пт) 21:17

Привет знатоки! Подскажите пожалуйста, как можно сделать так, чтобы прога выполняла какие-то действия по истечении заданного промежутка времени (примерно через каждые 5-10 часов). На сколько я понят таймер считает только в приделах минуты??? Просьба "Назначение заданий" стандартные windows возможности не предлагать. Заранее спасибо.

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

За пивом!

Сообщение hCORe » 02.01.2004 (Пт) 21:32

Ставь счетчик в таймере, и, по истечении каждой минуты (Interval=60000) добавляй единицу к счетчику:

Код: Выделить всё
Private Sub tmrTimer01_Timer()
'Вызов каждую минуту (Interval=60000)
On Error Resume Next
    Static minCounter as Single
    minCounter=minCounter+1
    If minCounter=300 Then '5 часов или 300 минут
        minCounter=0
        'Действия, выполняемые программой:
        MsgBox "Прошло 5 часов! Будем дальше сидеть" & _
        "за компом или пойдем за пивом???"
    End If
End Sub
Моду создают модоки, а распространяют модозвоны.

Vitamin
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 24.10.2003 (Пт) 12:16
Откуда: Barnaul, Russia

опять про таймер

Сообщение Vitamin » 03.01.2004 (Сб) 19:56

А можно сделать так, чтобы время задавалось в textbox например 8.00, 15.00 и 20.00 и действия выполнялись в это время??? И еще вопрос, если не затруднит, есть форма на ней кнопка "выход из программы", как сделать код процедуры выхода??? заранее спасибо...

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

Сообщение hCORe » 03.01.2004 (Сб) 20:11

Если время задается, то отследить все гораздо проще:
ставь Timer1.Interval=60000 и следующий код:
Код: Выделить всё
Private Sub Timer1_Timer()
On Error Resume Next
'Событие происходит каждую минуту

'Сверить системное время
'в формате часы:минуты
'с записью в текстбоксе Text1

'функция Format преобразует данные
'в необходимый формат
    If Format(Now,"hh:mm") = Trim(Text1.Text) Then
        'Выдать сообщение из Text2
        'можно модифицировать код и
        'использовать переменную, массив
        'или даже открытый текст
        MsgBox Text2.Text
     End If
End Sub


А при начале отслеживания:

Код: Выделить всё
Private Sub Command1_Click()
On Error Resume Next
'нажатие кнопки "Вызвать сообщение в определенное время"

'проверка, правильное ли время задано
'функция Val преобразует строку в число
If Val(Format(Now,"hh")) < Val(Format(Text1.Text,"hh")) Or _
(Val(Format(Now,"hh")) = Val(Format(Text1.Text,"hh")) And _
Val(Format(Now,"mm")) > Val(Format(Text1.Text,"mm"))) Then
    MsgBox "Куда собрались? Данные введены неправильно!"
    Exit Sub
End If

'вызов таймера в первый раз, т.к. может быть задано текущее время
    Timer1_Timer
End Sub


Чтобы завершить программу, используй либо такой код:
Код: Выделить всё
End

Он завершает программу "полуаварийно", не вызывая событий Form_Unload, в которых могут обрабатываться данные, очищаться объекты и т.д. Хотя это маловероятно, но при некоторых обстоятельствах End не работает. В этих двух случаях пригодится вызов Unload:

Код: Выделить всё
For Each frm in Forms
    Doevents
    If frm.Visible Then
        Unload frm
        Set frm = Nothing
    End If
Next frm


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

Vitamin
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 24.10.2003 (Пт) 12:16
Откуда: Barnaul, Russia

большое спасибо!

Сообщение Vitamin » 03.01.2004 (Сб) 20:30

большое спасибо! как приятно когда есть знающие люди и не считающими для себя зазорно объяснять прописные, наверно, истины. еще раз спасибо.

Vitamin
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 24.10.2003 (Пт) 12:16
Откуда: Barnaul, Russia

Еще вопрос разрешите???

Сообщение Vitamin » 03.01.2004 (Сб) 21:09

В общем решение задачи уже вижу, спасибо. Подскажите еще, плииз, как реализовать следующую задачу: необходимо производить копирование порядка 15 каталогов, заранее заданных пользователем со всем содержимым, в каталоге на другой машине в lan с переименованием этих самых каталогов. Например
каталог "c:\vasia" в каталог "d:\111", "c:\petya" --> "d:\222" и тд.
как считать время я понял, как переносить папки знаю. Теперь подскажите как и где хранить соответствие каталогов vasia - 111;
petya - 222. пробовал в listbox в принципе сделал, но ведь неудобно при каждом запуске проги задавать эти 15 соответствий.
Спасибо.

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

Сообщение hCORe » 03.01.2004 (Сб) 21:15

Сохраняй содержимое листбокса в файл :wink: :

Код: Выделить всё
Public Sub SaveLBToFile (ListBoxObject as ListBox, FileName as String)
On Error Resume Next
    Dim f as Byte
    f=FreeFile
    Open FileName For Output As #f
    For i=0 to ListBoxObject.ListCount-1
        DoEvents
        If Len(Trim(ListBoxObject.List(i)))<>0 Then
            Print #f, ListBoxObject.List(i)
        End If
    Next i
    Close #f
End Sub


а потом читай из файла данные:

Код: Выделить всё
Public Sub LoadLBFromFile (ListBoxObject as ListBox, FileName as String)
On Error Resume Next
    Dim f as Byte, ln as String
    f=FreeFile
    Open FileName For Input As #f
    Do Until EOF(f)
        DoEvents
        ln = ""
        Line Input #f, ln
        If Len(Trim(ln)) <> 0 Then
            ListBoxObject.AddItem ln
        End If
    Loop
    Close #f
End Sub


Здесь: ListBoxObject - имя объекта ListBox, например "List1" (без кавычек!), а FileName - имя файла для хранения записей.
Моду создают модоки, а распространяют модозвоны.


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

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

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

    TopList  
cron