FreeBasic
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.

помогите написать функцию SleepMode

Перейти вниз

помогите написать функцию SleepMode Empty помогите написать функцию SleepMode

Сообщение  electrik Пт Апр 16, 2010 10:12 pm

привет. я написал говорящие часы, а простую функцию не могу придумать.
мне нужна функция 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
Откуда : галактика Млечный путь, система Солнечная, планета Земля, страна россия, город Санкт Петербург

Вернуться к началу Перейти вниз

помогите написать функцию SleepMode Empty Re: помогите написать функцию SleepMode

Сообщение  electrik Сб Апр 24, 2010 12:52 pm

вот и написал я сам эту функцию. идея состоит в том, что нужно сравнивать не часы и минуты, а время как одно целое.
короче, объединяем время в одну переменную, в старшее слово пишем минуты а в младшее часы.
для удобства используем макрос 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
исправлено 19 декабря 2010

electrik

Сообщения : 391
Дата регистрации : 2008-09-02
Возраст : 43
Откуда : галактика Млечный путь, система Солнечная, планета Земля, страна россия, город Санкт Петербург

Вернуться к началу Перейти вниз

Вернуться к началу

- Похожие темы

 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения