|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
29.04.2007, 15:23 | #1 |
Новичок
Джуниор
Регистрация: 29.04.2007
Сообщений: 2
|
Выполнение действия в заданное время
Люди помогите пожилуста!!! Как сделать штобы программа в заданное время выполнила определенное действие???!
|
29.04.2007, 15:51 | #2 |
Студент
Форумчанин
Регистрация: 10.11.2006
Сообщений: 196
|
Если особая точнось не важна, то ставишь таймер с интервалом в 60000 мс (1 минута), а на событие WM_TIMER должна реагировать
процедура, определяющая, нужно ли сейчас что-то делать или нет. Соответственно, если действие однократное, отрубаем таймер.
Visita Interiorem Terrae Rectificando Operae Lapidem...
|
29.04.2007, 17:17 | #3 |
Александр
Администратор
Регистрация: 28.10.2006
Сообщений: 17,597
|
|
30.04.2007, 10:31 | #4 |
Новичок
Джуниор
Регистрация: 29.04.2007
Сообщений: 2
|
Нет мне надо штобы прога выполнила действие в определенную дату!!например 1 апреля.а через таймер так не получится.
|
30.04.2007, 11:27 | #5 |
Пользователь
Регистрация: 10.02.2007
Сообщений: 13
|
Просто узнаешь текущую дату:
procedure ShowTime; var Now: TDateTime; begin Label1.Caption:=FormatDateTime('dd. mm.yyyy', Now); end; помоему так, если не ошибаюсь... Прописываешь ее где-нить на Form.Show, а потом сравниваешь со своей заданной |
01.05.2007, 17:31 | #6 |
Студент
Форумчанин
Регистрация: 10.11.2006
Сообщений: 196
|
To Egych: Одно "но". Бывает, что компьтеры невыключают вообще, тогда
этот вариант не годится. To WOWan234: Ставь проверку при запуске + таймер с интервалом 1-2 м минуты. Поэтому таймер очень даже годится.
Visita Interiorem Terrae Rectificando Operae Lapidem...
|
02.05.2007, 01:52 | #7 |
Форумчанин
Регистрация: 16.04.2007
Сообщений: 298
|
uses Registry;
type TForm1 = class(TForm); ... private FHaveDateInRegistry: boolean; //флаг для проверки - была ли занесена запись в реестр FRegistry: TRegistry; //переменная для работы с реестром FDateTime: TDateTime; ... procedure TForm1.FormCreate(Sender: TObject); begin FRegistry := TRegistry.Create; FRegistry.RootKey := HKEY_CURRENT_USER; FRegistry.OpenKey('\MyVarDateTime', true); FHaveDateInRegistry := FRegistry.ValueExists('FHaveDateTim eInRegistry'); //при первом запуске программы эта переменная не будет в реестре, поэтому возвращаемое значение будет false. { дальше возможны варианты. Например на форме расположен компоненты TDateTimePicker, по которым ты и определяешь дату и время, когда сработает программа и кнопка для записи даты в реестр.} if FHaveDateInRegistry then //запись существует, значит все что нужно, в реестре уже есть begin if FRegistry.ValueExists('DateTimePick er12') then FDateTime := FRegistry.ReadDateTime('DateTimePic ker12') else FDateTime := EncodeDateTime(2007, 4, 1, 12, 0, 0, 0); DateTimePicker1.Visible := false; DateTimePicker2.Visible := false; Button1.Visible := false; Timer1.Enabled := true; end; end; procedure TForm1.Button1Click(Sender: TObject); begin FRegistry.WriteBoolean('FHaveDateIn Registry', true); FRegistry.WriteDateTime('DateTimePi cker12', Trunc(DateTimePicker1.DateTime) + frac(DateTimePicker2.DateTime)); end; procedure TForm1.Timer1Timer(Sender: TObject); begin if FDateTime = Date + Time then <твое событие> end;
Не надо ничего усложнять. Все достаточно тривиально.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Выполнение действия через промежуток времени | chingiz | Общие вопросы Delphi | 37 | 03.10.2012 11:33 |
Выполнение функции | nikleb | JavaScript, Ajax | 7 | 10.08.2008 01:49 |
Дано четырехзначное число, заданное в символьном виде, например, '1954'. Напечатать его текстом, например | gred | Помощь студентам | 13 | 31.03.2008 22:24 |
Засечь время, затраченное на выполнение программы. Делфи. | north | Помощь студентам | 5 | 12.12.2007 22:32 |
Выполнение действия с компонентами в цикле | Ermiss | Общие вопросы Delphi | 4 | 01.11.2007 23:54 |