Форум: "Основная";
Текущий архив: 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.007 c