Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Delay(200); - Что это такое, и что это значит 
:(
    Опции темы
-Vadim-
  Дата 23.8.2003, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 10.8.2003

Репутация: нет
Всего: нет



Delay(200); - Что это такое, и что это значит.
PM MAIL   Вверх
Vit
Дата 23.8.2003, 01:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Это значит остановиться, подождать 200 vcr и продолжить выполнение


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
December
Дата 23.8.2003, 02:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 8
Всего: 57



Цитата(Vit @ 23.8.2003, 01:41)
vcr

Судя по клаве, имелось в виду 200 мкс. Не совсем так, Vit, 200 мс.


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
Vit
Дата 23.8.2003, 02:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Сорри - просто очепятка - естественно миллисекунд


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
-Vadim-
Дата 23.8.2003, 02:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 10.8.2003

Репутация: нет
Всего: нет



Да? Как я понял это тоже самое что и Sleep(200) что ли. Кстате что то система у меня не останавливаеться при Delay(200). Он случаем не использует какой нибуть отдельный модуль.
PM MAIL   Вверх
Vit
Дата 23.8.2003, 04:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Вообще-то стандартной функции Delay в Delphi нет, это в TP была...


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
MacTep
Дата 23.8.2003, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: 4
Всего: 4



Да, ребят, с Delay действительно какой-то глюк. Система останавливается как-то странно. Может даже после того действия, перед которым стоит такая команда. А как работает Sleep? Это не одно и то же или все таки именно одно и тоже?


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
stab
Дата 23.8.2003, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



MacTep в Delphi Delay нет, если ты на Delphi программишь значит ты либо Delay сам написал, либо он где-то в модуле, который в Delphi не входит. Постарайся найти исходный код и сюда выкладывай.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
December
Дата 23.8.2003, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 8
Всего: 57



Sleep отдаёт процессорное время другим процессам. В принципе, sleep - самый корректный способ заснуть. Но! В это время не обрабатываются сообщения программой, что может привести к неприятным последствиям, особенно при работе с DDE.
Рекомендую вот такой вариант:
Код

procedure Wait (milliseconds:integer);
var
wint1:cardinal;
wint2:cardinal;
begin
wint1:=GetTickCount;
wint2:=wint1+milliseconds;
repeat
sleep(1);
application.ProcessMessages;
sleep(1);
until (wint2)<GetTickCount;
end;



--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
&-ray
Дата 23.8.2003, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 406
Регистрация: 15.4.2003
Где: Казахстан, г Аста на

Репутация: нет
Всего: нет



Вопрос вдогонку:
а зачем засыпать на 1 мс до и после application.ProcessMessages confused.gif


--------------------
"Совсем неважно от чего помрешь, ведь куда важнее - для чего родился..." С.Б.

--------------------
И снова мышь беру я в руки
Куда иду? - Конечно в сруки!
PM MAIL WWW   Вверх
Vit
Дата 23.8.2003, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Цитата
Вопрос вдогонку:
а зачем засыпать на 1 мс до и после application.ProcessMessages confused.gif

Если у тебя есть какой-нибудь "показометр" загрузки процессора, попробуй его запустить и сравнить что он будет показывать если твоя программа крутит 2 разных цикла:

repeat
application.processmessages;
until False;

и

repeat
application.processmessages;
sleep(20);
until False;


Фокус в том, что application.processmessages - помогает прорисовке своего приложения, но реально сильно нагружает процессор, т.е. твоё приложение для выполнения application.processmessages забирает время от других процессов, а Sleep наоборот отдаёт время твоего приложения другим программам.

Как использовать? - если твоя программа ожидает чего-то извне, например пока наступит какое-то событие в системе, или периодически что-то проверяет, или ожидает окончания выполнения какой-то другой программы то sleep надо вставлять обязательно - это очень сильно ускорит работу всей системы и чужих приложений.

Например я в своей программе ждал пока отработает Adobe Distiller - так вот разница в скорости работы дистиллера если я ждал его со sleep в цикле и без sleep (только с application.processmessages) отличалась в несколько раз.

Иногда можно использовать Sleep(1) или даже Sleep(0) - это вот что означает - реально CPU выполняет только одну команду в одно время, т.е. многозадачность работает примерно так: Допустим у нас 10 процессов, тогда винда делит (упрощеёно) секунду на 10 неравных частей (в зависимости от приорететов приложений), и заставляет процессор обрабатывать сначала один процесс, затем переключает на обработку следующего процесса и так по кругу... допустим твоей проге выделена 1/5 секунды в каждой секунде, но твоя программа ни фига не делает, только кого-то ждёт, если у тебя стоит application.processmessages - то все это выделенное время расходуется на проверку и выполнение очереди сообщения, мало того так как это весьма напряжная процедура винда даже отнимает время у других процессов и отдаёт твоему. А что же происходит когда стоит

repeat
application.processmessages;
sleep(0);
until False;

Винда опять таки выделила твоей программе 1/5 секунды, но твоя программа быстро проверила сообщения, а дальше всё остальное время на этой секунде отдала другим приложениям, т.е. sleep(0) означает в текущем цикле прекратить выполнение твоего кода и отдать оставшееся время другому процессу. (PS. Естественно что винда оперирует квантами времени отнюдь не секундной длительности - это я для простоты примера привёл)



--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
December
Дата 23.8.2003, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 8
Всего: 57



Цитата
Вопрос вдогонку:
а зачем засыпать на 1 мс до и после application.ProcessMessages confused.gif

Дело в том, что иногда требуется максимально равномерно распределить процессорное время и реакцию на события. До и после аппликатион.процессмессаги можно ставить разные задержки; в частности, до - 1, после - 0. Это было у меня наиболее эффективно.


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
&-ray
Дата 23.8.2003, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 406
Регистрация: 15.4.2003
Где: Казахстан, г Аста на

Репутация: нет
Всего: нет



ОК, вроде дошло smile.gif
Я раньше не задумывался о таких тонкостях.


--------------------
"Совсем неважно от чего помрешь, ведь куда важнее - для чего родился..." С.Б.

--------------------
И снова мышь беру я в руки
Куда иду? - Конечно в сруки!
PM MAIL WWW   Вверх
Akella
  Дата 31.8.2003, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Да, а иногда одна мальенькая прималенькая мелочь решает почти все!

Это сообщение отредактировал(а) dsergey - 31.8.2003, 22:31
PM MAIL   Вверх
&-ray
Дата 31.8.2003, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 406
Регистрация: 15.4.2003
Где: Казахстан, г Аста на

Репутация: нет
Всего: нет



Цитата
Да, а иногда одна мальенькая прималенькая мелочь решает почти все!

Тогда это уже не мелочь biggrin.gif


--------------------
"Совсем неважно от чего помрешь, ведь куда важнее - для чего родился..." С.Б.

--------------------
И снова мышь беру я в руки
Куда иду? - Конечно в сруки!
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

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

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0668 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.