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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2010, 12:22   #1
Talemir
Пользователь
 
Регистрация: 12.08.2009
Сообщений: 62
По умолчанию Запуск программы по времени

Мне необходимо открывать программу по определенному времени.
Я использовал вот такой код:
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
 Var
T:String;
Begin
T:=TimeToStr(Now);
If T='23:21:00' Then
Begin
Timer1.Enabled:=false;
end;
  End;

procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Enabled:=true;
While Timer1.Enabled<>false do
begin
Application.ProcessMessages;
end;
end;
Но при запуске грузится процессор до 100% из-за данной процедуры While Timer1.Enabled<>false do
Помогите разрешить данную проблему.

Последний раз редактировалось mihali4; 03.02.2010 в 12:55.
Talemir вне форума Ответить с цитированием
Старый 03.02.2010, 12:45   #2
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Потому что у тебя цикл бесконечный получается, т.к. скорее всего таймер не успевает проверить именно в эту секунду 00. ИЛи интервал таймера не 1 секунда
FaTaL на форуме Ответить с цитированием
Старый 03.02.2010, 12:53   #3
Talemir
Пользователь
 
Регистрация: 12.08.2009
Сообщений: 62
По умолчанию

В интервале Таймера устанавливал 1000 и воще 0 устанавливал. Ничего проц грузит
Talemir вне форума Ответить с цитированием
Старый 03.02.2010, 12:57   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Просто уберите это никому не нужное извращение:
Код:
While Timer1.Enabled<>false do
begin
Application.ProcessMessages;
end;
и все будет в порядке...
А вот строку
Код:
If T='23:21:00' Then
лучше написать так:
Код:
If T>='23:21:00' Then
mihali4 вне форума Ответить с цитированием
Старый 03.02.2010, 13:04   #5
Melphin
Новичок
Джуниор
 
Регистрация: 03.02.2010
Сообщений: 12
По умолчанию

просто выполни инициализацию приложения в отдельной процедуре, и запускай её из таймера, когда время будет то, какое тебе нужно. В остальных случаях пусть таймер ничего не делает, просто дальше щелкает себе и все. если программа должны быть спрятанна в это время, то сделай перед запуском таймера
ShowWindow(Application.MainForm.Han dle,SW_HIDE);
а в процедуре инициализации сделаешь
ShowWindow(Application.MainForm.Han dle,SW_SHOW);

Ну я так делал))
Жизнь - как плохо проDEBUGеный код. В самы ответственный момент вылетает Access Violations.
Melphin вне форума Ответить с цитированием
Старый 03.02.2010, 13:07   #6
Melphin
Новичок
Джуниор
 
Регистрация: 03.02.2010
Сообщений: 12
По умолчанию

mihali4 на сколько мне знается, строка не сможет сама себя проверить на больше или меньше)))) лучше проверить
StrToTime('23:21:00')<=TimeOf(now)
Ну или наоборот)))
Жизнь - как плохо проDEBUGеный код. В самы ответственный момент вылетает Access Violations.
Melphin вне форума Ответить с цитированием
Старый 03.02.2010, 13:15   #7
Talemir
Пользователь
 
Регистрация: 12.08.2009
Сообщений: 62
По умолчанию

Если я убираю
While Timer1.Enabled<>false do
begin
Application.ProcessMessages;
end;

Тогда форма появляется, но нужно, что бы она появлялась по заданному времени
Talemir вне форума Ответить с цитированием
Старый 03.02.2010, 13:18   #8
Melphin
Новичок
Джуниор
 
Регистрация: 03.02.2010
Сообщений: 12
По умолчанию

Читай мой пост выше))
Жизнь - как плохо проDEBUGеный код. В самы ответственный момент вылетает Access Violations.
Melphin вне форума Ответить с цитированием
Старый 03.02.2010, 13:20   #9
Melphin
Новичок
Джуниор
 
Регистрация: 03.02.2010
Сообщений: 12
По умолчанию

есть еще вариант!
В DPR можно перед созданиями форм сделать функцию проверки текущего времени. через CreateTimer.
Или перед Application.run Запустить модально левую форму, которая скрыта с твоим таймером. после совпадении времени закрывать эту форму и ждать появления основной
Жизнь - как плохо проDEBUGеный код. В самы ответственный момент вылетает Access Violations.
Melphin вне форума Ответить с цитированием
Старый 03.02.2010, 13:35   #10
Melphin
Новичок
Джуниор
 
Регистрация: 03.02.2010
Сообщений: 12
По умолчанию

Вот посмотри такой примерчик.

Прога запускается через 30 секунд.
Вложения
Тип файла: rar Example.rar (3.2 Кб, 96 просмотров)
Жизнь - как плохо проDEBUGеный код. В самы ответственный момент вылетает Access Violations.
Melphin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисление времени работы программы Monte-Kristo Паскаль, Turbo Pascal, PascalABC.NET 2 12.06.2009 13:25
Запуск программы Vladya Помощь студентам 4 17.11.2008 11:38
Запуск программы на выполнение из другой программы. ViNcHeStEr Паскаль, Turbo Pascal, PascalABC.NET 6 18.06.2008 14:33
Запуск программы Egych Общие вопросы Delphi 4 04.05.2007 09:46