помогите написать функцию SleepMode
FreeBasic :: Программирование :: Общее
Страница 1 из 1
помогите написать функцию SleepMode
привет. я написал говорящие часы, а простую функцию не могу придумать.
мне нужна функция SleepMode. как она работает,
я ввожу диапазон времени, ну например, с 22.30 до 7.39, и в этот отрезок времени, часы должны молчать, тоесть, функция должна вернуть FALSE, во все другое время TRUE.
можно функцию без параметров, так как у меня есть структура с настройками, и проверка ведется по ней.
приведу нужный ее кусок
type RTCSETTINGS
fromHours as WORD ' от скольких-то часов
fromMinutes as WORD ' сколько то минут
toHours as WORD ' до стольких-то часов
toMinutes as WORD ' сколько-то минут
end type
dim shared cSettings as rtcsettings
функцию можно простую типа:
function SleepMode() as integer
тут что-то мудрим
end function
подскажу как работать с временем через winApi
подключаем заголовки и пишем
dim shared systime as systemtime ' структура, куда бутет читаться время
а вот так читаем время
getlocaltime(@systime)
а вот эти члены структуры будут нужны
systime.whour ' час
systime.wminute ' минута
качнуть часы можно:
http://svalka-spb.narod.ru
там совсем старая версия, новая будет оочень круче. говорят классно, это говорю не я, а те кто о них отзывается. ни кто еще не обматюгал. я думал будет именно так.
зарание, благодарен!
мне нужна функция SleepMode. как она работает,
я ввожу диапазон времени, ну например, с 22.30 до 7.39, и в этот отрезок времени, часы должны молчать, тоесть, функция должна вернуть FALSE, во все другое время TRUE.
можно функцию без параметров, так как у меня есть структура с настройками, и проверка ведется по ней.
приведу нужный ее кусок
type RTCSETTINGS
fromHours as WORD ' от скольких-то часов
fromMinutes as WORD ' сколько то минут
toHours as WORD ' до стольких-то часов
toMinutes as WORD ' сколько-то минут
end type
dim shared cSettings as rtcsettings
функцию можно простую типа:
function SleepMode() as integer
тут что-то мудрим
end function
подскажу как работать с временем через winApi
подключаем заголовки и пишем
dim shared systime as systemtime ' структура, куда бутет читаться время
а вот так читаем время
getlocaltime(@systime)
а вот эти члены структуры будут нужны
systime.whour ' час
systime.wminute ' минута
качнуть часы можно:
http://svalka-spb.narod.ru
там совсем старая версия, новая будет оочень круче. говорят классно, это говорю не я, а те кто о них отзывается. ни кто еще не обматюгал. я думал будет именно так.
зарание, благодарен!
electrik- Сообщения : 391
Дата регистрации : 2008-09-02
Возраст : 43
Откуда : галактика Млечный путь, система Солнечная, планета Земля, страна россия, город Санкт Петербург
Re: помогите написать функцию SleepMode
вот и написал я сам эту функцию. идея состоит в том, что нужно сравнивать не часы и минуты, а время как одно целое.
короче, объединяем время в одну переменную, в старшее слово пишем минуты а в младшее часы.
для удобства используем макрос makeword из виндовых заголовков.
не полный код, думаю время сами в переменные зачитаете
короче, объединяем время в одну переменную, в старшее слово пишем минуты а в младшее часы.
для удобства используем макрос makeword из виндовых заголовков.
не полный код, думаю время сами в переменные зачитаете
- Код:
#include "windows.bi
function SleepMode() as integer
dim fromTime as ushort ' установленное начальное время
dim toTime as ushort ' установленное конечное время
dim curTime as ushort ' текущее время
fromTime = makeword(cSettings.fromMinutes,cSettings.fromHours) ' объединяем часы и минуты начального времени
toTime = makeword(cSettings.toMinutes,cSettings.toHours) ' объединяем часы и минуты конечного времени
curTime = makeword(systime.wminute,systime.whour) ' объединяем часы и минуты текущего времени
if cSettings.sleepMode = BST_CHECKED then ' если в виндах стоит флажок режим сна
if FromTime > toTime then ' если установленное начальное время больше конечного
if curTime >= fromTime then ' если текущее время больше установленного начального
return FALSE ' время произносить нельзя
end if
if curTime < toTime then ' если текущее время меньше установленного конечного
return FALSE ' время произносить нельзя
end if
if CurTime >=toTime then ' если текущее время больше установленного конечного
return TRUE ' время говорить можно
end if
end if
if fromTime < toTime then ' если установленное начальное время меньше установленного конечного
if CurTime >=toTime then ' если текущее время больше установленного конечного
return TRUE ' время говорить можно
end if
if curTime >= fromTime then ' если текущее время больше установленного начального
return FALSE ' время говорить нельзя
end if
end if
end if
return TRUE ' если флажок снят, время говорить можно всегда
end function
electrik- Сообщения : 391
Дата регистрации : 2008-09-02
Возраст : 43
Откуда : галактика Млечный путь, система Солнечная, планета Земля, страна россия, город Санкт Петербург
FreeBasic :: Программирование :: Общее
Страница 1 из 1
Права доступа к этому форуму:
Вы не можете отвечать на сообщения
|
|