![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| -Vadim- |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 10.8.2003 Репутация: нет Всего: нет |
Delay(200); - Что это такое, и что это значит.
|
|||
|
||||
| Vit |
|
|||
![]() 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 |
|||
|
||||
| December |
|
|||
![]() Antitheorist ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 8 Всего: 57 |
Судя по клаве, имелось в виду 200 мкс. Не совсем так, Vit, 200 мс. |
|||
|
||||
| Vit |
|
|||
![]() 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 |
|||
|
||||
| -Vadim- |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 10.8.2003 Репутация: нет Всего: нет |
Да? Как я понял это тоже самое что и Sleep(200) что ли. Кстате что то система у меня не останавливаеться при Delay(200). Он случаем не использует какой нибуть отдельный модуль.
|
|||
|
||||
| Vit |
|
|||
![]() 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 |
|||
|
||||
| MacTep |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: 4 Всего: 4 |
Да, ребят, с Delay действительно какой-то глюк. Система останавливается как-то странно. Может даже после того действия, перед которым стоит такая команда. А как работает Sleep? Это не одно и то же или все таки именно одно и тоже?
-------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 14 Всего: 48 |
MacTep в Delphi Delay нет, если ты на Delphi программишь значит ты либо Delay сам написал, либо он где-то в модуле, который в Delphi не входит. Постарайся найти исходный код и сюда выкладывай.
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| December |
|
|||
![]() Antitheorist ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 8 Всего: 57 |
Sleep отдаёт процессорное время другим процессам. В принципе, sleep - самый корректный способ заснуть. Но! В это время не обрабатываются сообщения программой, что может привести к неприятным последствиям, особенно при работе с DDE.
Рекомендую вот такой вариант:
|
|||
|
||||
| &-ray |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 406 Регистрация: 15.4.2003 Где: Казахстан, г Аста на Репутация: нет Всего: нет |
Вопрос вдогонку:
а зачем засыпать на 1 мс до и после application.ProcessMessages -------------------- "Совсем неважно от чего помрешь, ведь куда важнее - для чего родился..." С.Б. -------------------- И снова мышь беру я в руки Куда иду? - Конечно в сруки! |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Если у тебя есть какой-нибудь "показометр" загрузки процессора, попробуй его запустить и сравнить что он будет показывать если твоя программа крутит 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 |
|||
|
||||
| December |
|
|||
![]() Antitheorist ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 8 Всего: 57 |
Дело в том, что иногда требуется максимально равномерно распределить процессорное время и реакцию на события. До и после аппликатион.процессмессаги можно ставить разные задержки; в частности, до - 1, после - 0. Это было у меня наиболее эффективно. |
|||
|
||||
| &-ray |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 406 Регистрация: 15.4.2003 Где: Казахстан, г Аста на Репутация: нет Всего: нет |
ОК, вроде дошло
Я раньше не задумывался о таких тонкостях. -------------------- "Совсем неважно от чего помрешь, ведь куда важнее - для чего родился..." С.Б. -------------------- И снова мышь беру я в руки Куда иду? - Конечно в сруки! |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Да, а иногда одна мальенькая прималенькая мелочь решает почти все!
Это сообщение отредактировал(а) dsergey - 31.8.2003, 22:31 |
|||
|
||||
| &-ray |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 406 Регистрация: 15.4.2003 Где: Казахстан, г Аста на Репутация: нет Всего: нет |
Тогда это уже не мелочь -------------------- "Совсем неважно от чего помрешь, ведь куда важнее - для чего родился..." С.Б. -------------------- И снова мышь беру я в руки Куда иду? - Конечно в сруки! |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |