|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.09.2015, 09:38 | #11 | ||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Цитата:
(через указанный интервал тоже сводится к указанному времени). код который должен быть задержан, в отдельную процедуру. при наступлении момента НАЧАЛА задержки (до выполения кода) 1) запуск ОТДЕЛЬНОГО таймера на те 5 секунд!!! в OnTimer остановка таймера (защита от повторного вызова) вызов процедуры которая ДОЛЖНА БЫЛА БЫТЬ ЗАДЕРЖАНА. 2) без отдельного таймера (используем тот же таймер что и "часики" при наступлении момента НАЧАЛА задержки (до выполнения кода) отмечаем контрольное время запуска starttime:=IncSec(now, 5); в Ontimer "часиков" проверяем контрольное время и запускаем Код:
Цитата:
к ООП много-много мелких классов, собранных В ОДИН большой АВТОМАТ. пример решения вашей проблемы (sleep) в переходе на OOП описан выше. разбиение на блоки и независимое (автономное и управляемое выполнение каждого блока)
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 08.09.2015 в 10:18. |
||
08.09.2015, 10:07 | #12 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
evg_m, золотые слова! Категорически согласен!
|
08.09.2015, 13:46 | #13 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Код:
Есть ли в смысл задерживать процесс? Возможно лучше его вообще отложить? Например, если речь идет об обработке массива, остановиться на i-ом элементе, а, когда будет нужно, продолжить не с начала, а с i-ого. Возможно лучше всё-таки организовать отдельный поток? Например, если речь идет о загрузке файла с сервера. Возможно лучше завершить процесс, а обработку результатов отложить на потом? Или, Illusiony, ты просто хочешь отображать время работы процесса? Тогда нужно залочить/разлочить окно в начале/конце процесса, а в теле процесса периодически устанавливать стрелки и выполнять Application.ProcessMessages. -------------------------------------------------------------------------- А чтобы стрелки не отставали нужно не двигать их каждую секунду, а рассчитывать их положение при каждой отрисовке (Время = Начало - Сейчас) |
08.09.2015, 18:03 | #14 |
Форумчанин
Регистрация: 17.02.2014
Сообщений: 881
|
Огромное всем спасибо за ответы, советы и т.д.
Я понимаю что линейно-функциональное программирование это прошлый век. Причина тому не профессионализм, выражающийся в том, что я нигде не обучался программированию кроме пару десятков занятий на паскале, html в техникуме и универе. И поэтому само по себе мышление отражает этот принцип. Вот я смотрю на устройство классов, объектов, их взаимодействия и не могу представить себе, как их использовать в своей прикладной задаче, а линейные варианты решения возникают сразу и не одно. Вот самое главное как то уметь представлять задачу в ООП, что к сожалению, у меня не получается, ограничиваюсь только функциями и процедурами и то в сумбурном варианте. |
08.09.2015, 19:53 | #15 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
простой пример
объект ШКОЛА имеет вложенные объекты РАСПИСАНИЕ ЗВОНКОВ РАСПИСАНИЕ ЗАНЯТИЙ НАБОР(список/массив) объектов КЛАСС (ов) НАБОР объектов ПРЕПОДВАТЕЛЬ (-и) и все взаимодействует. 1. объект расписание звонков контролирует время и инициирует какие-то действия в расписании занятий. 2. расписание занятий в соответствии с расписанием звонков (по его инициативе и в соответствии с его данными (какой сейчас урок по времени+какой день ...) инициирует набор классов и набор преподавателей в соответствии со своими данными на проведение конкретных уроков. в вашем случае есть тоже судя по-всему есть некое расписание по выполнению некоторых действий. есть СПИСОК выполняемых действий.(набор процедур собранных в класс) и есть время выполнения данных действий.(массив или набор отдельных переменных в которых хранятся временные отметки когда должны будут выполнены определенные действия(процедуры из данного класса) и есть либо внешний объект(либо внутренний) Timer который "пинает" этот объект расписание с любой заданной периодичностью. В ответ на эти пинки в соответствии со своей "внутренней" логикой (список действий и список времен выполнения) выполняет(или не выполняет) какие-то действия. Во время выполнения он может изменить свое состояние, к примеру составить новое расписание (изменить время выполнения каких либо процедур). Вначале эти действия могут оказаться довольно большими. к примеру в школьном расписании есть очень большое действие (школьный день ) но оно разбивается на множество мелких (один урок одного преподавателя в одном классе) единственно надо помнить что пинки (если не использовать многопоточность) могут происходить только в моменты простоя (когда не выполняется никакой код). поэтому если мы хотим иметь "тикающие часики" то процедуры-действия должны быть достаточно короткими по времени.
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 08.09.2015 в 20:28. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Есть ли смысл кешировать в оперативке | Illusiony | PHP | 3 | 02.03.2015 18:10 |
Есть ли в этом смысл? | raytek | Microsoft Office Access | 21 | 05.04.2013 19:22 |
есть ли смысл изучать | visual user | Microsoft Office Excel | 5 | 12.06.2012 10:57 |
Российская ОС. Есть ли смысл? | mrChester | Свободное общение | 39 | 30.07.2010 17:25 |