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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2010, 13:24   #1
beygul
Форумчанин
 
Аватар для beygul
 
Регистрация: 15.09.2008
Сообщений: 335
По умолчанию задержка

Привет всем! Нужно осуществить задержку в программе задержку. То есть чтобы после выполнения команды, прошла секунда и выполнялась вторая команда, Важно чтобы вторая команда выполнялась не сразу после первой, а ИМЕННО с задержкой, например в секунду... заранее всем спс...
beygul вне форума Ответить с цитированием
Старый 16.05.2010, 13:25   #2
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

Язык какой?

На Delphi - Sleep(x);
где x-количество миллисекунд
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab
ex.cluz вне форума Ответить с цитированием
Старый 16.05.2010, 13:28   #3
beygul
Форумчанин
 
Аватар для beygul
 
Регистрация: 15.09.2008
Сообщений: 335
По умолчанию

Да на делфи... Но Sleep(x); - не канает... т. к. останавливает процесс работы всей проги... Надо что то другое, а что..........
beygul вне форума Ответить с цитированием
Старый 16.05.2010, 13:29   #4
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

Тогда кидайте на форму TTimer и работайте с ним.
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab
ex.cluz вне форума Ответить с цитированием
Старый 16.05.2010, 13:35   #5
beygul
Форумчанин
 
Аватар для beygul
 
Регистрация: 15.09.2008
Сообщений: 335
По умолчанию

я не совсем понимаю как это осуществить через таймер... с ним практически не работал....

if key = ' ' then begin

yyy := yyy -1 * cos(angleX*pi/180);
yyy := yyy +2 * cos(angleX*pi/180);

end;

нужно чтобы между выполнением этих двух команд:
yyy := yyy -1 * cos(angleX*pi/180);
yyy := yyy +2 * cos(angleX*pi/180);
была задержка... Но даже с таймером не могу понять как это сделать...
beygul вне форума Ответить с цитированием
Старый 16.05.2010, 13:36   #6
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Цитата:
Сообщение от beygul Посмотреть сообщение
Да на делфи... Но Sleep(x); - не канает... т. к. останавливает процесс работы всей проги... Надо что то другое, а что..........
Цитата:
чтобы после выполнения команды, прошла секунда и выполнялась вторая команда, Важно чтобы вторая команда выполнялась не сразу после первой, а ИМЕННО с задержкой, например в секунду...

Ну ты и сказал... Ты требуешь, чтобы очередная команда программы выполнялась не раньше одной секунды после предыдущей команды, а теперь говоришь о каком-то подвисании программы. Где логика-то???
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 16.05.2010, 13:41   #7
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

Сначала киньте этот компонент на форму, затем установите свойство Enabled в false.
Теперь между вашими вычислениями вставьте:
Код:
Timer1.Enabled:=true;
Теперь создайте событие OnTimer и напишите:
Код:
Timer1.Enabled:=false;
В свойстве Interval поставьте время задержки в миллесекундах.

Проверил. У меня не работает. Видимо первое же событие OnTimer происходит сразу при активизации таймера, а не по истечении некоторого времени. Сейчас соображу, как можно сделать по другому.
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab

Последний раз редактировалось ex.cluz; 16.05.2010 в 13:49.
ex.cluz вне форума Ответить с цитированием
Старый 16.05.2010, 13:48   #8
beygul
Форумчанин
 
Аватар для beygul
 
Регистрация: 15.09.2008
Сообщений: 335
По умолчанию

ошибок при компиляции не возникло, но программа всё равно работает не так как надо....
beygul вне форума Ответить с цитированием
Старый 16.05.2010, 13:55   #9
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

Можно так:
объявляете глобальную переменную, например, i (в разделе private) типа byte.

теперь OnTimer корректируете так:
Код:
if i=2 then Timer.Enabled:=false;
i:=i+1;
А в событие OnCreate (у формы) пишите:

Код:
i:=0;
Все работает.

ЕСЛИ У ВАС ГДЕ-ТО ИСПОЛЬЗУЕТСЯ ПЕРЕМЕННАЯ i ТО ЗАМЕНИТЕ ЕЕ (В МОИХ ЗАПИСЯХ) НА КАКУЮ-НИБУДЬ ДРУГУЮ.

Ах да, прошу прощения, забыл, переправьте, пожалуйста:
Код:
if i=2 then begin i:=0; Timer.Enabled:=false; end;
i:=i+1;
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab

Последний раз редактировалось ex.cluz; 16.05.2010 в 14:13.
ex.cluz вне форума Ответить с цитированием
Старый 16.05.2010, 14:18   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

beygul, Вы явно "хотите странного"

Ну, если вариант с таймером не устраивает (не могу даже представить - ЧЕМ! Вы его просто применять не можете!) и большАя точность Вам не нужна,
можете попробовать так:
Код:
for i:=1 to 100 do begin
  Application.ProcessMessages;
  sleep(10);
end;
p.s. Мой способ использовать ТОЛЬКО в том случае, если не сможете разобраться с нормальным способом (например, как выше описал ex.cluz)
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Временная задержка zleyshiy Общие вопросы Delphi 4 14.08.2009 08:15
Задержка экрана Paul_AG Паскаль, Turbo Pascal, PascalABC.NET 3 19.07.2009 04:44
Задержка JRcoker Общие вопросы Delphi 11 08.08.2008 00:38
Задержка Syred Общие вопросы Delphi 2 07.06.2008 08:16
Задержка MaTBeu Общие вопросы C/C++ 3 24.12.2007 10:29