158 / 157 / 16
Регистрация: 26.07.2008
Сообщений: 549
|
|
1 | |
Пауза процедуры31.08.2008, 14:31. Показов 53881. Ответов 16
Метки нет (Все метки)
Посдкажите пожалуйста, можно ли еще как-нибудь установить паузу на выполнение процедуры, кроме Sleep();?
0
|
31.08.2008, 14:31 | |
Ответы с готовыми решениями:
16
Пауза в потоке Пауза потоков Пауза в процедуре Пауза в программе. |
Почетный модератор
11531 / 4325 / 449
Регистрация: 12.06.2008
Сообщений: 12,428
|
|
31.08.2008, 15:11 | 2 |
А чем Sleep не нравится? Можно написать что-то вроде:
Код
Procedure Delay(d : Cardinal); Begin d := d + GetTickCount; While d>GetTickCount do Application.ProcessMessages; End;
1
|
158 / 157 / 16
Регистрация: 26.07.2008
Сообщений: 549
|
|
31.08.2008, 15:26 [ТС] | 3 |
0
|
13208 / 6597 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
|
|
01.09.2008, 19:09 | 4 |
Ну дак это вот как делается-то:
Код
// bla-bla-bla i := 0; while i<100 do begin sleep(100); // 100 раз по 100 мс = 10 сек. Application.ProcessMessages; inc(i); end; // bla-bla-bla
1
|
158 / 157 / 16
Регистрация: 26.07.2008
Сообщений: 549
|
|
02.09.2008, 22:40 [ТС] | 5 |
0
|
21 / 21 / 8
Регистрация: 07.01.2009
Сообщений: 556
|
||||||
14.09.2009, 19:17 | 6 | |||||
Сообщение было отмечено как решение
Решение
Я тоже раньше пользовался аналогичным алгоритмом для паузы, только для того чтобы программа была более добра к другим процессам винды я использовал sleep(10). Но для тех случаев, когда нужна точная пауза, этот алгоритм не подходит, т.к. команда Application.ProcessMessages каждый раз будет выполняться разное неизвестное количество времени (особенно при загруженности процессора).
Я провёл исследования, при необходимой паузе 10 секунд алгоритм даёт погрешность 0.75 секунды (при нагруженном процессоре возможно будет больше). Поэтому если нужна точная пауза, лучше использовать такой алгоритм:
3
|
Junior Developer
44 / 44 / 7
Регистрация: 08.06.2009
Сообщений: 261
|
||||||
23.08.2010, 00:39 | 7 | |||||
pivogol, слушай, вопрос к тебе
вот сделал как ты написал, а мне выкидывает прога, что неправильно ввёл что то... ошибка на скрине... вот так я вызываю твою процедуру
0
|
21 / 21 / 8
Регистрация: 07.01.2009
Сообщений: 556
|
|
23.08.2010, 00:43 | 8 |
У процедуры входное число может быть от 0 до 255, может быть не выполняется это условие.
0
|
Junior Developer
44 / 44 / 7
Регистрация: 08.06.2009
Сообщений: 261
|
|
23.08.2010, 09:07 | 9 |
0
|
Почетный модератор
64303 / 47600 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
|
||||||
23.08.2010, 09:13 | 10 | |||||
0
|
21 / 21 / 8
Регистрация: 07.01.2009
Сообщений: 556
|
|
23.08.2010, 10:32 | 11 |
Puporev, Тогда не знаю, у меня даже дэлфи сейчас дома не установлено, только на работе есть, а там я буду только в среду. Может сегодня-завтра поставлю дома, позанимаюсь. Попробуйте пока вызывать процедуру с конкретными жёстко указанными значениями 10, 20 и т.д. И Вы там исправили byte на integer, но допустимы ли для encodetime(0,0,p,0) значения больше чем 255 (или больше чем 60) я не помню.
0
|
Почетный модератор
11531 / 4325 / 449
Регистрация: 12.06.2008
Сообщений: 12,428
|
|||||||||||
23.08.2010, 10:36 | 12 | ||||||||||
Не получится... Он может быть только от 0 до 60 из-за строки
1.1574074074074074074074074074074e-5 - это секунда в формате TTime или TDateTime. Эти типы тоже самое, что и Double. 1 = сутки... час = 1 / 24... минута = 1 / 24 / 60.... секунда = 1 / 24 / 60 / 60 = 1.1574074074074074074074074074074e-5
0
|
Junior Developer
44 / 44 / 7
Регистрация: 08.06.2009
Сообщений: 261
|
|
23.08.2010, 11:35 | 13 |
Puporev, понятно
в принципе вышел через другое дело спасибо
0
|
0 / 0 / 0
Регистрация: 09.07.2010
Сообщений: 40
|
|
18.11.2010, 20:55 | 15 |
спс за код, долго искал
Добавлено через 21 час 33 минуты Сообщение
0
|
SBARTACO
|
||||||||||||
14.06.2011, 13:17 | 16 | |||||||||||
Спасибо, хорошая процедура, но не работает так как надо, если даже до 255, то в функции
encodetime(0,0,p,0) p не должно превышать 60 секунд:
|
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 4
|
|||||||||||
16.05.2012, 07:27 | 17 | ||||||||||
и я искал нечто подобное, ибо при нормальной загрузке компа вместо 130 минут могло и 170 ждать...
к сжл, ваше тоже не работает. Также если задать больше 60000 миллисекунд, прога вылетет с ошибкой, ибо число минут должно быть задано <60. А вот так работает :
...кстати, вышеприведенная функция не сработает, если отчет времени начался к концу дня, либо когда задана достаточно большая пауза (больше суток например) Поэтому надо учитывать не только время, но и дату (правда в справочнике пишут, что now возвращает точность до секунды). Обновленная функция:
0
|
16.05.2012, 07:27 | |
16.05.2012, 07:27 | |
Помогаю со студенческими работами здесь
17
Пауза в коде Пауза в выполнении программы Пауза в процедуре, остановка Пауза в выводе инфы в Memo Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства
Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
|
Что такое NullReferenceException и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
|
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
|
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
|
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
|
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
|
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее:
На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
|
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript
В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
|
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
|
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален
В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
|
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
|
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели
В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
|