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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2007, 15:23   #1
WOWan234
Новичок
Джуниор
 
Регистрация: 29.04.2007
Сообщений: 2
Вопрос Выполнение действия в заданное время

Люди помогите пожилуста!!! Как сделать штобы программа в заданное время выполнила определенное действие???!
WOWan234 вне форума Ответить с цитированием
Старый 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
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,758
По умолчанию

http://www.programmersclub.ru/labtimer
Alar вне форума Ответить с цитированием
Старый 30.04.2007, 10:31   #4
WOWan234
Новичок
Джуниор
 
Регистрация: 29.04.2007
Сообщений: 2
Восклицание

Цитата:
Сообщение от Сильванович Михаил Посмотреть сообщение
Если особая точнось не важна, то ставишь таймер с интервалом в 60000 мс (1 минута), а на событие WM_TIMER должна реагировать
процедура, определяющая, нужно ли сейчас что-то делать или нет.
Соответственно, если действие однократное, отрубаем таймер.
Нет мне надо штобы прога выполнила действие в определенную дату!!например 1 апреля.а через таймер так не получится.
WOWan234 вне форума Ответить с цитированием
Старый 30.04.2007, 11:27   #5
Egych
Пользователь
 
Аватар для Egych
 
Регистрация: 10.02.2007
Сообщений: 13
По умолчанию

Просто узнаешь текущую дату:

procedure ShowTime;
var Now: TDateTime;
begin
Label1.Caption:=FormatDateTime('dd. mm.yyyy', Now);
end;

помоему так, если не ошибаюсь... Прописываешь ее где-нить на Form.Show, а потом сравниваешь со своей заданной
Egych вне форума Ответить с цитированием
Старый 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
Shuraken
Форумчанин
 
Аватар для Shuraken
 
Регистрация: 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;
Не надо ничего усложнять. Все достаточно тривиально.
Shuraken вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнение действия через промежуток времени 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