Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.08.2010, 13:18   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию в заданное время выполнить действие, проверьте пожалуёйста=)

Привет=)
опустим в указанное время надо выполнить какое-то действие.. как это правельно сделать?

Вот что получилось у меня:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls,DateUtils, sEdit;

type
  TForm1 = class(TForm)
    MessageEdit: TEdit;
    StartBtn: TButton;
    StopBtn: TButton;
    Timer: TTimer;
    TimeEdit: TsEdit;
    procedure StartBtnClick(Sender: TObject);
    procedure StopBtnClick(Sender: TObject);
    procedure TimerTimer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.StartBtnClick(Sender: TObject);
begin
Timer.Enabled:=True;
StopBtn.Enabled:=True;
StartBtn.Enabled:=False;
end;

procedure TForm1.StopBtnClick(Sender: TObject);
begin
Timer.Enabled:=False;
StopBtn.Enabled:=False;
StartBtn.Enabled:=True;
end;

procedure TForm1.TimerTimer(Sender: TObject);
begin
If FormatDateTime(TimeEdit.Text,Time) = FormatDateTime('hh:mm',Now) then
ShowMessage(MessageEdit.Text);
Timer.enabled:=False;
end;

end.
проблема вот какая, если убрать из Timer.Timer строку:

Код:
Timer.enabled:=False;
то программа работает , но сообщение выводит постоянно, на протяжении всего времени(Пока на часах указанное время(12:15 к примеру, и до 12:16 программа будет засирать ShowMessage'ами экран)).

Если поставить Timer.enabled:=false;
то программа сработает при условии что запущен таймер и только когда на часах будет указанное время.
Человек_Борща вне форума Ответить с цитированием
Старый 28.08.2010, 13:23   #2
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

а почему не сделать Interval=3600 (минуту)?
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 28.08.2010, 13:34   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

хм , это работает.. но сообщение запаздывает и дублируется, почему?
Человек_Борща вне форума Ответить с цитированием
Старый 28.08.2010, 13:36   #4
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Сообщение не запаздывает. Просто проверка происходит раз в минуту, с момента запуска таймера. Т.е. если таймер запустился в 00:00:30, то и проверка будет в 00:01:30 и т.д.
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 28.08.2010, 13:46   #5
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

Код:
If FormatDateTime(TimeEdit.Text,Time) = FormatDateTime('hh:mm',Now) then
begin
  ShowMessage(MessageEdit.Text);
  Timer.enabled:=False;
end;
_Engine_ вне форума Ответить с цитированием
Старый 28.08.2010, 15:14   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну и плюс к вышесказанному, я бы ещё сделал так:
Код:
If FormatDateTime(TimeEdit.Text,Time) <= FormatDateTime('hh:mm',Now) then
чтобы если таймер проскочил - событие всё равно сработало.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.08.2010, 20:35   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Благодарю, это работает!
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнить действие в указанное время sergeiqwe PHP 3 06.05.2010 16:28
Выполнить действие один раз. IVANSour Общие вопросы Delphi 5 02.02.2009 22:01
выполнить действие. IVANSour Общие вопросы Delphi 6 01.02.2009 22:53
Выполнить действие один раз. IVANSour Общие вопросы Delphi 11 01.02.2009 14:17