Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Пауза на программу? [D7, WinXP]


Артем К. ©   (2004-09-17 04:36:00) 

Здравствуйте, уважаемые мастера!

Подскажите пожалуйста, как установить "паузу" на программу, т.е. чтобы определенное количество времени, программа, как-бы, подвисала.

Заранее спасибо!


46_55_41_44   (2004-09-29 13:25:00) [1]

procedure Delay(MSecs: Longint);
var
 FirstTickCount, Now: Longint;
begin
 FirstTickCount := GetTickCount;
 repeat
   Application.ProcessMessages;
   { allowing access to other controls, etc. }
   Now := GetTickCount;
 until (Now - FirstTickCount >= MSecs) or (Now < FirstTickCount);
end;

Взято из RxLib - VCLutils.pas


KSergey   (2004-09-29 07:45:00) [2]

К стати, тогда лучше вот это

> Begin
>   Sleep(10);
>   Application.ProcessMessages;
> End;

заменить на

Begin
  WaitMessage;
  Application.ProcessMessages;
End;


KSergey   (2004-09-29 07:44:00) [3]

Прошу прощения
Только сейчас разглядел, что Flag объявлен снаружи


KSergey   (2004-09-29 07:43:00) [4]

> [8] Fedia   (29.09.04 06:29)
> >Навсегда...
> Я бы так не утверждал. Советую для начала попробовать.

А что пробовать-то? Укажите мне, пожалуйста, при каких условиях сей цикл прервется в данном случае???


Fedia   (2004-09-29 06:41:00) [5]

Или это был тонкий юмор :)


Fedia   (2004-09-29 06:29:00) [6]

KSergey ©   (29.09.04 06:14) [7]
>Навсегда...
Я бы так не утверждал. Советую для начала попробовать.


KSergey   (2004-09-29 06:14:00) [7]

> Suspend(True); - остановит программу

Навсегда...


Fedia   (2004-09-28 23:04:00) [8]

Если я правильно понял вопрос.
Ответ от Defunct ©   (18.09.04 21:25) [1] Var Flag: Boolean;
Procedure Suspend(AFlag:Boolean);
Begin
Flag := AFlag;
While Flag Do
Begin
  Sleep(10);
  Application.ProcessMessages;
End;
End;

Suspend(True); - остановит программу
Suspend(False); - продолжит.
С условием, что приложение не использует доп. потоков.


Apl   (2004-09-28 14:08:00) [9]

Создатй поток и меняй ему приоритет и получишь желаемые тормоза


Amoeba   (2004-09-28 13:40:00) [10]


> SiDChik ©   (28.09.04 13:17) [3]

А сам хоть понял, что спросил?


SiDChik   (2004-09-28 13:17:00) [11]

а теперь скажите как поставить паузу чтоб только ход выполнения тормозился а не программа..........
Ответе на мыло


Артем К.   (2004-09-17 04:52:00) [12]

>>Fedia

Спасибо!


Fedia   (2004-09-17 04:39:00) [13]

Функция sleep(1000{на одну секунду});


Наверх

Титульная страница Поиск, карта сайта Написать письмо