Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Нет времени самому помозговать, поэтому спрошу. Придумайте кто-нибудь как визуализировать обратный отсчет времени до события? Время я может быть посчитаю, а как сделать именно визуализацию счетчика времени чтобы он назад шел я навскидку не могу сказать. Должно быть два варианта - время наступления события фиксировано (в 20:00) либо относительно (через 2 часа). Отсчет типа -01:00:00 -00:59:38 -00:57:25 и т.д... Кто поможет пока я сам не додумаюсь получит плюсики Как задавать вопросы
Да нет, тут нужна простая матекаматека Время = 20 прямой счет 1,2...20, обратный получем отнимая прямой счет от заданного времени 20-1=19, 20-2=18,...,20-19=1,20-20=0 Это тебе принцип, реализацию я думаю ты в состоянии и сам осилить.
ну как обычно, в виде глобальной переменной hh:mm:ss
Тогда его можно выразить в секундах, думаю для тебя это не составит труда, так же как и перевести обратно в этот формат. Вообще то время это цыферь, а hh:mm:ss ее визуализация, и особеных сложностей в этой математике нету, да и вычисления не занимают много времени и ресурсов, всего несколько десятков тактов принцессора.
Добавлено (20 Январь 2010, 21:29) --------------------------------------------- получение числа из "времени" время в секундах(число)=часы *3600+минуты*60+секунды получение "времени" из числа часы=число\3600 минуты=число-(часы*3600)\60 секунды=число-((часы*3600)+(минуты\60)) обратный отсчет =число события - текущее число преобразованное во "время"
а проц успеет все просчитать чтобы успеть изменить значение секунды, отставать не будет или перескакивать?
Ну ты меня убил наповал Даже не знаю как на такое отвечать Какова тактовая частота твоего принцессора? Столько тактов(операций) он производит за одну секунду, не буду врать, конкретно не знаю, даже не то что не знаю, а просто облом подсчитать, сколько машинных циклов займет подобное вычисление... Скажу образно, на самом допотопном пк хватит не только все подсчитать, но еще и сползать попить пива
Добавлено (20 Январь 2010, 22:44) --------------------------------------------- просто помню на ммб кто-то делал таймер и там все обсуждали правильности вычисления секунд в зависимости от процессора
Добавлено (20 Январь 2010, 22:45) --------------------------------------------- вот зачем ты сказал про пиво...
ну то, нифига ты там наворотил! а попроще нельзя, а то я с наскока ничерта не понял как там работает?
Добавлено (21 Январь 2010, 12:40) --------------------------------------------- вводишь часы, минуты - считает их неправильно, а если только секунды - правильно. если вводишь пургу (56, 99... то тоже в ступоре)
DEMBEL, на второй странице второй вариант, вводишь время, пошел обратный отсчет. Только с синхронизацией чет не пойму. С первым потом покапаюсь. В первом нужно время вводить , на какое назначено. Но где то накасячил.
DEMBEL, Короче я хрен знаю что с этим таймером делать. Отстает на 5 секунд в минуту. А секунды точно нужны? С минутами проще было бы. Тоесть что б показывало только часы, минуты. А так , таимер усовершенствовал, код покороче сделал. С первым вариантом еще ни как Не хочешь читать хелп?
спасибо, Алекс, твой пример пашет норм. Я подозревал что с этим таймером тут будет не все так просто как могло показаться... будем разбираться. Как задавать вопросы
Я подозревал что с этим таймером тут будет не все так просто как могло показаться... будем разбираться.
Ну чего ж там сложного, чистая математика. Для таких вещей, использовать знакомый вам таймер нельзя, это совсем другая вещь, не для этого предназначена. Как работает время на ПК, имеется системный таймер, который с определенной частотой прерывает выполнение вычислений и проводится регенерация памяти. Память динамическая, это набор конденсаторов, который необходимо переодически заряжать, что бы информация на них не пропала. Кроме регенерации, по сис таймеру производится и увеличение системного счетчика времени, который считает сколько микросекунд прошло от некой даты. Для определения даты и времени мы просто считываем этот счетчик, преобразовывая его значение в дату или время. Сбои системного времени возможны при зависаниях, когда даже регенерация памяти отказывает. А известный вам всем програмный таймер, не может использоваться в временных функциях, так как он подвязан на квант времени приложения, время может истечь до того как приложение получит управление, а получив его спустя просто сгенерирует срабатывание, но фактически время между запуском и срабатыванием будет уже не то. Вывод-там где нужны функции времени используем считывание системного времени, а там где нужна просто задержка, програмный таймер.
во, уже кое-что! относительный отсчет пашет вроде, а где задавать конкретное время? там надо разницу текущего и заданного будет вычислить перед стартом, и запускать на вычисленное количество? Как задавать вопросы
там надо разницу текущего и заданного будет вычислить перед стартом, и запускать на вычисленное количество?
Нет, там надо во сколько нужно запустить какую ли бо операцию. Если сейчас допустим 22 00, выставляешь к примеру 23 10. Он тебе будет отсчитывать сам, сколько осталось. Только я с сутками не стал заморачиваться. Не хочешь читать хелп?
Нет, тут как раз ставится не ВО сколько, а ЧЕРЕЗ сколько запустить операцию. Надо чтобы это "через сколько" высчитывалось само на основании заданного времени "во сколько" надо запустить событие. При этом учитывались сутки, например на часах [x]=23:00:00 а задаешь 01:10:30 и он бы это схавал с поправкой на 24-[x]. Я попробовал, тут гемор страшный. Еще вопрос - может использовать не 1 а 3 таймера для Ч:М:C отдельно? так нагрузка меньше будет, чем каждую секунду высчитывать такую кучу, я понимаю что вы перевели все в секунды, но чувствую из всего проекта таймер на секундах будет тогда один работать... можно схитрить - секунды не считать а сделать мульку просто для показа (но токо чтоб от заданных секунд отсчитывалась), а события отлавливать токо по Ч:М
Добавлено (11 Февраль 2010, 10:24) --------------------------------------------- короче, нужен совет гигамозга, без него никак
Добавлено (11 Февраль 2010, 10:28) --------------------------------------------- кстати где-то у as-master'а видел в каком-то из проектов упоминание - "событие произойдет в течение текущей минуты (или через минуту)" наверное там тоже хитрость и секунды взаправду не высчитывались а просто показывались с разницей от заданной, а контролировалось событие по Ч:М.
Нет, тут как раз ставится не ВО сколько, а ЧЕРЕЗ сколько запустить операцию
НЕ вижу ни каких трудностей, опять чист математика. х-через сколько, у-время постановки задачи, z-время события z=х+у Если надо что бы учитывались и следующие сутки, в расчет надо брать и день недели, а если по максимуму то и полную дату. А для полного кайфа, просите Petera что бы добавил в плагин функцию считывания системного времени, это число формата double- 8 байтовое число с плавающей запятой, целая его часть дата, дробное время.
Нет, тут как раз ставится не ВО сколько, а ЧЕРЕЗ сколько запустить операцию
Там второй еще пример есть. Его видел? Насчет суток покумекаю. Только как определяются дни недели в винде на других языках? Я смогу прочитать из переменной день недели. Но если винда будет англоязычная....