Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.10.06;
Скачать: [xml.tar.bz2];

Вниз

Помогите чайнику с DateTimePicker   Найти похожие ветки 

 
RoLeX   (2003-09-21 21:44) [0]

Вот кусок моей программы на Delphi:

...
procedure TForm1.Timer1Timer(Sender: TObject);
var
ph:THandle;
tp,prevst:TTokenPrivileges;
rl:DWORD;
begin
if (RadioButton1.Checked) and (RadioButton6.Checked) and (DateTimePicker1.Date=now) and (DateTimePicker2.Time=Now) then
begin
OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,ph);
LookupPrivilegeValue(Nil,"SeShutdownPrivilege",tp.Privileges[0].Luid);
tp.PrivilegeCount:=1;
tp.Privileges[0].Attributes:=2;
AdjustTokenPrivileges(ph,FALSE,tp,SizeOf(prevst),prevst,rl);
ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF,0);
end;
end;
...

Вот чё она должна делать:
Условие: Когда Timer1Timer, если RadioButton1 выделена и RadioButton6 выделена и дата в DateTimePicker1 равна дате которая сейчас, и время в DateTimePicker2 равно времени сейчас, тогда:
Сделать выключение компа: OpenProcessToken.......ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF,0);
Но почемуто когда все эти условия выолняются комп не выключается. Я делал всё и так и сяк. И пришёл к выводу, что "...(DateTimePicker1.Date=now) and (DateTimePicker2.Time=Now)..." написано не совсем правильно.
Как напиать "...(DateTimePicker1.Date=now) and (DateTimePicker2.Time=Now)..." по другому???


 
Alex Konshin   (2003-09-22 00:27) [1]

Возьми мой TDateComboBox на http://home.earthlink.net/~akonshin/index.htm
Он показывает и время, и дату одновременно.


 
Alex Konshin   (2003-09-22 00:36) [2]

На будущее:
Тип TDateTime - это обычный тип double. Целая часть этого числа - это номер дня от какой-то фиксированной даты в прошлом (не помню какой, посмотри в help), дробная часть - это часть от текущих суток - из нее и вычисляется время.
Соответственно Now содержит обе этих части, а DateTimePicker1.Date и DateTimePicker2.Time - только по одной из них (другая нулевая). Поэтому-то у тебя сравнение и неуспешное.
То есть, тебе нужно брать соответственно целую и дробную часть от Now и их уже и сравнивать.
Второй момент: ты зря сравниваешь дату и время на равенство (как и вообще любые числа с плавающей запятой), так как совпадение их маловероятно. В твоем случае нужно использовать "меньше или равно", т.е. "<=".


 
RoLeX   (2003-09-22 16:37) [3]

Когда заменяю "=" на "меньше или равно", т.е. "<=". То выключается сразу!


 
ZEE   (2003-09-22 16:49) [4]

...(DateTimePicker1.Date=Date) and (DateTimePicker2.Time=Time)...


 
RoLeX   (2003-09-22 17:26) [5]

To "ZEE" -> ...(DateTimePicker1.Date=Date) and (DateTimePicker2.Time=Time)...
Тоже бесполезно! Когда время приходит, ноль реакции!


 
ZEE   (2003-09-22 17:31) [6]

а так?
if FormatDateTime("dd.mm.yyyy",DateTimePicker1.Date)+" "+FormatDateTime("hh:nn",DateTimePicker2.Time)=FormatDateTime("dd.mm.yyyy hh:nn",Now) then ...


 
RoLeX   (2003-09-22 17:50) [7]

if FormatDateTime("dd.mm.yyyy",DateTimePicker1.Date)+" "+FormatDateTime("hh:nn",DateTimePicker2.Time)=FormatDateTime("dd.mm.yyyy hh:nn",Now) then ...
Не компилирует: пишет ошибка: "Incompatible types: "String" and "Boolean""


 
MacroDenS   (2003-09-22 18:15) [8]

Да ладно не парься, просто сделай преобразование такое:

if (RadioButton1.Checked) and (RadioButton6.Checked) and (DateToStr(DateTimePicker1.Date)=DateToStr(now)) and (TimeToStr(DateTimePicker2.Time)=TimeToStr(Now)) then begin
..........
end;

и все получится


 
RoLeX   (2003-09-22 19:39) [9]

А как из DateTimePicker2.Time вычесть Now ???
Типа сколько времени осталось до DateTimePicker2.Time



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.10.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.161 c
1-18288
xGhost
2003-09-26 11:40
2003.10.06
проблема с удалением значения из ini файла


4-18677
Pauk
2003-07-31 13:43
2003.10.06
OnMouseDown


1-18361
Vladislav
2003-09-22 16:24
2003.10.06
ScrollBox и onMouseWheel


1-18414
Nikulin
2003-09-25 15:15
2003.10.06
Что за дирректива local в обьявлении процедуры?


4-18682
abc
2003-07-31 13:03
2003.10.06
как с помощью winAPI получить сетевое имя компа?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский