Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Будильник [D7, WinXP]


Quattro ©   (2005-07-20 01:59:00) 

Ещё раз добрый день!....вот ещё вопрос возник...в МаскЭдит ставишь некое время...как только это время наступило происходят некие действия....на форме Таймер, МаскЭдит, и кнопка...почему то некие действия не хотят происходить=)...теряюсь в догадках.=)..прошу вашей консультации..вот то что  я написал...
var
s:TDateTime;

procedure TForm1.Timer1Timer(Sender: TObject);
var
SysTime:TDateTime;
begin
Label1.Caption:='Текущее время : '+ TimeToStr(Now);
SysTime:=Time;
if s = SysTime then
begin
Label2.Caption:='Иц воркинг!';
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
s:=StrToTime(MaskEdit1.Text);
end;


Quattro   (2005-07-20 02:42:00) [1]

Господа!!Большое вам спасибо!!=))


Defunct   (2005-07-20 02:27:00) [2]

> Quattro ©   (20.07.05 01:59)  
и никогда не получится.
Минимальный квант системного времени равен 10ms (см Рихтера), в системе туева куча потоков, которые работают разделяю процессорное время на равне с вашим потоком, поэтому нет никакой гарантии, что в заданное вами время, будет выполняться именно ваш поток. Следовательно, будильник должен проверять время на БОЛЬШЕ РАВНО, а НЕНА РАВЕНСТВО

if SysTime >=S then
  Label2.Caption:='thinking's good';


Джо   (2005-07-20 02:26:00) [3]

А нафига с текстом сравнивать?...

Бросаешь на форму:
 Button1,
 DateTimePicker1,
 Timer1.


procedure TForm1.FormCreate(Sender: TObject);
begin
 Timer1.Enabled := False;
 DateTimePicker1.Kind := dtkTime;
 DateTimePicker1.DateTime := Now;
 Button1.Caption := 'Start'
end;
...
procedure TForm1.Button1Click(Sender: TObject);
begin
 // запускаем/останавливаем таймер
 Timer1.Enabled := not Timer1.Enabled;
 // надпись на кнопке в зависимости от состояния
 if Timer1.Enabled then
   Button1.Caption := 'Stop'
 else
   Button1.Caption := 'Start';
end;
...
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if Now>=DateTimePicker1.DateTime then
 begin
   Timer1.Enabled := False; // выключим во избежание двойного срабатывания
   ShowMessage ('Alarm!');
 end;
end;


Quattro   (2005-07-20 02:24:00) [4]

2alex-drob о чудо!!заработало....а не мог бы кратенько расказать..почему в первоначальном ваинте не работало??


alex-drob   (2005-07-20 02:02:00) [5]

Попробуй так:
if timetostr(s)= timetostr(SysTime) then
Должно получится.


Наверх

Титульная страница Поиск, карта сайта Написать письмо