Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 293
от 12.11.2005, 19:39

Администратор:Калашников О.А.
В рассылке:Подписчиков: 252, Экспертов: 46
В номере:Вопросов: 2, Ответов: 16


Вопрос № 29038: Доброго времени суток господа!!! 1, Можете мне помочь в переводе времени в секунды. Т.е. как извлечь из времени часы, минуты и секунды я знаю, но как перевести их в секунды. Я пробовал так (см. приложение1), но ничего не получается данная фу...
Вопрос № 29075: Доброго времени суток господа эксперты!!! К вопросу 29038. Некоторые эксперты непоняли некоторые пункты моего вопроса. Поясняю их может тогда я смогу получить ответы на эти пункты. 3. Как программным путем выключить, включить и пере...

Вопрос № 29.038
Доброго времени суток господа!!!

1, Можете мне помочь в переводе времени в секунды. Т.е. как извлечь из времени часы, минуты и секунды я знаю, но как перевести их в секунды. Я пробовал так (см. приложение1), но ничего не получается данная функция почему-то всегда равна нулю, если ее присваивать какой-то переменной.

2. Каким способом можно узнать разницу воремени т.е. зная текущее время и нужное время узнать междуними разницу времени (например между 13:00 и 14:00 разница в 1 час но как программным путем это узнать). И по этой разнице должна работать программа.

3. Как программным путем выключить, включить и перезагрузить компьютер.

4. Как заставить программу работать при отключенном копьютере.

5. Как сделать стрелочные часы. Как к ним добавить стрелку будильника. (без кого-то либо компонента т.е. програмным путем с помощь cavans)

Зарание благодарю всех кто хоть как-то поможет мне!!!

С Уважением,
Ujin Antikvar!!!

Приложение:

Отправлен: 06.11.2005, 22:37
Вопрос задал: Ujin Antikvar (статус: 2-ой класс)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Архангельский Андрей Германович
Здравствуйте, Ujin Antikvar!
Должно быть так как показано в приложении - результат функции нужно присваивать переменной Result

Приложение:

Ответ отправил: Архангельский Андрей Германович (статус: 6-ой класс)
Отправлен: 07.11.2005, 00:45

Отвечает: Schmak
Здравствуйте, Ujin Antikvar!
1) Ошибка заключается в том, что вместо Second вы написали в теле функции Sec.

function TimeToSec(Hour,Minute,Second:integer):integer;
begin
TimeToSec:=Hour*3600+Minute*60+Second;
end;

2)Подключите модуль DateUtils, в нём много полезных функциий и процедур для работы с датами и временем, в частности Вам могут пригодиться функции
HoursBetween(ANow:Tdatetime, AThen:Tdatetime):int64 //Количество часов между датами
Аналогичные функции MinutesBeetween.. SecondsBetween.. MilliSecondsBetween..

4)Это невозможно чисто физически. Как программа будет работать если всё выключено? Это то же самое, что смотреть телевизор, не включив его в сеть :)

5)Я уже отправлял более менее рабочую программу при ответе на вопрос №27798. Посмотрите там.

---------
Не всё то Windows, что висит!
Ответ отправил: Schmak (статус: 6-ой класс)
Отправлен: 07.11.2005, 06:20
Оценка за ответ: 5

Отвечает: sir henry
Здравствуйте, Ujin Antikvar!
1. Ваша функция не работает, потому что у Вас разные переменные в заголовке и в теле функции. А принцип правильный. Может быть у Вас просто значение получается больше, чем тип Iteger? Сделайте его Int64. Может быть тип переменной, которой Вы присваиваете значение функции не вмещает ее результат? Проверьте.
2. Есть специальный модуль - DateUtils. Там множество функций по работе с датой и временем. Например количество часов между двумя метками времени:
HoursBetween(ANow, AThen);
3. Как включить не знаю, а вот выключить или перезагрузить - см. приложение.
4. Сами то поняли, что спросили? :)
5. Положить на форму три таймера. У одного будет часовой интервал, у другого минутный, у третьего секундный. В событии OnTimer каждого стирать старую стрелку и рисовать новую.
Стрелка будильника никакой роли, кроме декоративной, играть не будет, так что Вы ее можете добавить простым рисованием линии ( Line(X1, Y1, X2, Y2) ), главное будет периодически сверять время будильника с текущим временем.

Приложение:

Ответ отправил: sir henry (статус: Академик)
Отправлен: 07.11.2005, 07:58
Оценка за ответ: 5

Отвечает: Ерёмин Андрей
Здравствуйте, Ujin Antikvar!
1) Вы используете тип данных Integer - его максимальное значение равно 32768, что слишком мало в данной ситуации. Одно лишь произведение 3600*60 уже уходит из допустимого диапазона (216000). Замените тип данных на Int64 и всё заработает.
2) Подключите к программе модуль DateUtils. В нём целый набор функциий для этой цели:
function YearsBetween(const ANow, AThen: TDateTime): Integer;
function MonthsBetween(const ANow, AThen: TDateTime): Integer;
function WeeksBetween(const ANow, AThen: TDateTime): Integer;
function DaysBetween(const ANow, AThen: TDateTime): Integer;
function HoursBetween(const ANow, AThen: TDateTime): Int64;
function MinutesBetween(const ANow, AThen: TDateTime): Int64;
function SecondsBetween(const ANow, AThen: TDateTime): Int64;
function MilliSecondsBetween(const ANow, AThen: TDateTime): Int64;

3) Что-то я не понял, о каком включении идёт речь... :-/ А вот функции для завершения сеанса пользователя, выключения компьютера, выключения вместе с отключением питания и перезагрузки:

function LogOffOS: Boolean;
begin
{$IFDEF MSWINDOWS}
Result := ExitWindows(EWX_LOGOFF);
{$ENDIF}
end;

function PowerOffOS: Boolean;
begin
{$IFDEF MSWINDOWS}
Result := ExitWindows(EWX_POWEROFF);
{$ENDIF}
end;

function ShutDownOS: Boolean;
begin
{$IFDEF MSWINDOWS}
Result := ExitWindows(EWX_SHUTDOWN);
{$ENDIF}
end;

function RebootOS: Boolean;
begin
{$IFDEF MSWINDOWS}
Result := ExitWindows(EWX_Reboot);
{$ENDIF}
end;

4) ???
5) С помощью Canvas и вручную очень муторно это делать, но возможно. Лучше возьмите компонент JvAnalogClock из JediVCL.

Приложение:

---------
Где найти кpяк под ковpик для однокнопочного мыша?

Ответ отправил: Ерёмин Андрей (статус: Специалист)
Отправлен: 07.11.2005, 08:35
Оценка за ответ: 5


Вопрос № 29.075
Доброго времени суток господа эксперты!!!

К вопросу 29038. Некоторые эксперты непоняли некоторые пункты моего вопроса. Поясняю их может тогда я смогу получить ответы на эти пункты.

3. Как программным путем выключить, включить и перезагрузить компьютер.
О том как перезагрузить и выключить компьютер мне дали понятные ответы. Но о том как программно включить компьютер мне так и не ответили.

4. Как заставить программу работать при отключенном копьютере.
В этом вопросе я имел ввиду о том чтобы программа работала при отключенном компьютере. Ведь в компьютере есть такая прогрмма которая так работает - это системные часы, почему когда компьютер отключен они работаю или я ошибаюсь?
Для Schmak но ведь и в телевизоре есть будильник который может в определенное время включить и выключить телевизор. И еще ты не мог бы еще раз написать тот пример, а то я что-то вопрос тот найти не могу (5 пункт вопроса 29038)

С Уважением,
Ujin Antikvar!!!
Отправлен: 07.11.2005, 11:02
Вопрос задал: Ujin Antikvar (статус: 2-ой класс)
Всего ответов: 12
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Архангельский Андрей Германович
Здравствуйте, Ujin Antikvar!
Это вопрос о том "Есть ли жизнь после смерти?"
Системные часы представляют собой микросхему с очень низким потреблением энергии. Если ты хочешь чтобы эти часы еще что-то делали, то должен добавить к ним "процессор", который будет отслеживать время - разработай и предложи компьютерной промышленности, убеди их что это надо, дождись пока они будут выпускать, потом когда это появится у широкого пользователя.
В телевизоре есть такой "процессор", который выполняет необходимые ДЛЯ ТЕЛЕВИЗОРА функции.

Ты можешь включить компьютер удаленно - через COM-порт, локальную сеть, для этого необходимо в БИОСе поставить соответствующие галочки, но что ты будешь делать дальше?
Для того чтобы без пользователя это имело смысл программа должна быть написана и установлена как сервис, с запуском от имени конкретного пользователя. Что она может и должна сделать? Только, "отформатировать диск C:" - шутю.
Она не может ничего передать пользователю, потому что пользователь еще не зарегистрировался в системе.

Поэтому лучше опиши полностью задачу - возможно она решается другими средствами.
Ответ отправил: Архангельский Андрей Германович (статус: 6-ой класс)
Отправлен: 07.11.2005, 11:23

Отвечает: Ерёмин Андрей
Здравствуйте, Ujin Antikvar!
3) Компьютер нельзя программно включить - только физически.
4) Часы сохраняются на батарейке. Программа не может работать в фоновом режиме - компьютер полностью выключен.
---------
Где найти кpяк под ковpик для однокнопочного мыша?
Ответ отправил: Ерёмин Андрей (статус: Специалист)
Отправлен: 07.11.2005, 11:29

Отвечает: akaDemik
Здравствуйте, Ujin Antikvar!
"Программа часы" это собственно никакая не программа, а просто часы... и работают они от батарейки. Выполнять от этой батарейки какой-то программный код в простом случае имхо не выйдет. Отсюда и вытекает что включить ПК твоя программа не сможет, так как не может работать пока он выключен. Что помоему весьма логично.

Многие мат. платы умеют "пробуждаться" от сигнала модема, появления питания, команды по LAN и прочие разности можно использовать это. Всего-то спаять =) свое устройство которое в конце концов будет кнопку Power "нажимать" или мат. плате сигнал на побудку выдавать, а для него уже написать свою программу настраиваемую через какой-нибудь порт того же ПК. Но стандартного и общеприемлимого решения ты не найдешь.
Ответ отправил: akaDemik (статус: 1-ый класс)
Отправлен: 07.11.2005, 11:33

Отвечает: Lector
Здравствуйте, Ujin Antikvar!
3.
а)установи в true значение wake up on lan в bios. Во внешней сети поставь блокировку, чтобы ни одна программа кроме твоей не могла обращаться к компьютеру.
б)позвони производителю материнской платы и попроси сделать bios с поддержкой этой функции.
в)напиши его сам и перепрошей материнку.

Аналогично с остальными вопросами.
---------
Хочешь помочь старику - сделай вместо него.
Хочешь помочь новичку - сделай вместе с ним.
Хочешь помочь мастеру - отойди и не мешай,
а хочешь помочь дураку - сам дурак.
Ответ отправил: Lector (статус: 8-ой класс)
Отправлен: 07.11.2005, 11:42

Отвечает: sir henry
Здравствуйте, Ujin Antikvar!
3. Еще раз повторяю, програмным путем включить комп нельзя. На выключеном компе не работают программы уже хотябы в силу того, что не работает процессор. Если поймете эту простую истину - будет Вам щастье. :)
4. Все-таки с головой у Вас вава. :)
Поясняю, что такое будильник. Это не программа, это устройство. Оно всегда на подпитке (от батарейки, когда комп выключен). У будильника есть генератор, который отсчитывает метки времени, есть аппаратные регистры, где хранятся дата и время и есть специальный регистр для будильника, куда заносится время "пробудки" компа. И есть компаратор, который сравнивает текущее время и время будильника.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 07.11.2005, 11:45

Отвечает: Rusland
Здравствуйте, Ujin Antikvar!
На самом деле это все зависит от биоса. Некоторые биосы (например асусы) позволяют запускать компьютеры по времени. Помню была такая программа ByAlarm. Однако заставить работать вашу программу при отключенном компе не возможно. В вашем случае нужно смотреть в сторону биоса. Удачи.
---------
Пресловутое недостающее звено между обезьяной и цивилизованным человеком - это как раз мы. (Конрад Лоренц)
Ответ отправил: Rusland (статус: Практикант)
Отправлен: 07.11.2005, 11:59

Отвечает: Delphin
Здравствуйте, Ujin Antikvar!

3. Включит можно только прошив это в биос. Там есть параметр Wake Up.
4. Плохо знаеш железо. Oни идут в микросхеме BIOS. Вытащи батарейку и перестанут идти.
---------
Обращаться в ICQ: 66550088 (Ally) или E-Mail: delphinster@gmail.com
Ответ отправил: Delphin (статус: Студент)
Отправлен: 07.11.2005, 12:46

Отвечает: nimoid
Здравствуйте, Ujin Antikvar!
По поводу п.4.
Часы работают от батарейки, а тебе нужен процессор. Можно наверно в биос прописать что-нить (я не уверен), но средствами делфи ты это реализовать не сможешь (прописывать на асме надо есессно). И я не советую тебе прошивать что-то в биос. Малейшая твоя ошибка может привести к его краху.
---------
А так все хорошо начиналось...
Ответ отправил: nimoid (статус: 4-ый класс)
Отправлен: 07.11.2005, 13:37

Отвечает: Romodos
Здравствуйте, Ujin Antikvar!
1)Это просто невозможно!!!!
Сами подумайте, как включить компьютер, если он выключен и операционная система не загружена?!
2)Часы - это не программа, это часы на материнской плате. Включить компьютер как будильник можно только через БИОС
---------
FAQ me off!
Ответ отправил: Romodos (статус: Студент)
Отправлен: 07.11.2005, 15:42

Отвечает: Ataman N. N.
Здравствуйте, Ujin Antikvar!
Есть такое понятие как BIOS, с помощью которого можна "программно" включать компьютер. К сожалению эта возможность недоступна в старых компьютерах.
Часы на компьютере, я так думаю, работают по принципу обычных электронных часов, только без дисплея.
Ответ отправил: Ataman N. N. (статус: 1-ый класс)
Отправлен: 07.11.2005, 15:56

Отвечает: Denisss
Здравствуйте, Ujin Antikvar!
1. Программно включить компьютер можно только через сеть, либо через PCI-устройство. И то только в том случае, если это поддерживает мат.плата.

2. Вы хоть сами-то понимаете о чем спрашиваете? "Как заставить процессор работать без электричества?"
Системные часы находятся в BIOS (ПЗУ - зашитая в компьютер программа), он питается от батарейки. Заряда батарейки достаточно для часов и сохранения параметров BIOS и не хватит для выполнения программы (тем более, что для работы программы необходимо еще и ОС загрузить, а это еще больших мощностей требует).
Ответ отправил: Denisss (статус: Практикант)
Отправлен: 07.11.2005, 20:34

Отвечает: Schmak
Здравствуйте, Ujin Antikvar!
3,4) Поскольку Вам дали уже исчерпывающие ответы на тему BIOS и часов,то я поясню лишь что пункт Wakeup by Alarm ("Подъём по будильнику") есть почти на всех (я думаю даже на всех современных уж точно) материнских платах, он позволяет включить компьютер в определенное время. Toq можно попробовать включить комп через сеть или модем, соответствующий пункт также есть в Bios.

4.2) Киньте на форму Image и timer.
ps: Рисует она конечно корявенько, но можете исправить прорисовку стрелок.

Приложение:

---------
Не всё то Windows, что висит!

Ответ отправил: Schmak (статус: 6-ой класс)
Отправлен: 08.11.2005, 06:33


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Яндекс Rambler's Top100 hotlog_js="1.0"; hotlog_r=""+Math.random()+"&s=314124&im=101&r="+escape(document.referrer)+"&pg="+ escape(window.location.href); document.cookie="hotlog=1; path=/"; hotlog_r+="&c="+(document.cookie?"Y":"N"); hotlog_js="1.1";hotlog_r+="&j="+(navigator.javaEnabled()?"Y":"N") hotlog_js="1.2"; hotlog_r+="&wh="+screen.width+'x'+screen.height+"&px="+ (((navigator.appName.substring(0,3)=="Mic"))? screen.colorDepth:screen.pixelDepth) hotlog_js="1.3" hotlog_r+="&js="+hotlog_js; document.write("HotLog")

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Архив рассылки
Отписаться
Вспомнить пароль

В избранное