|
1 / 1 / 0
Регистрация: 12.12.2012
Сообщений: 25
|
|
Прерывание цикла for29.07.2013, 02:17. Показов 5813. Ответов 28
Метки нет (Все метки)
Здравствуйте уважаемые форумчане. Можно ли как то прервать цикл for i
Например у меня стоит for i = 0 to 1000 do begin мне нужно каждые 500 раз тормозить на час. Как это лучше сделать? желательно чтобы приложение не висело (sleep тормозит всю отзывчивость) Спасибо!
0
|
|
| 29.07.2013, 02:17 | |
|
Ответы с готовыми решениями:
28
Прерывание цикла for Внезапное прерывание цикла Есть ли возможность реализовать прерывание цикла консольного приложения нажатием клавиши? |
| 30.07.2013, 17:22 | |
|
Не по теме: Dr_Quake, это говорят эмбаркодеры
0
|
|
| 30.07.2013, 17:28 | ||
|
Не по теме:
А мне сказали исходники ComCtrls: procedure TTimer.UpdateTimer; begin KillTimer(FWindowHandle, 1); if (FInterval <> 0) and FEnabled and Assigned(FOnTimer) then if SetTimer(FWindowHandle, 1, FInterval, nil) = 0 then raise EOutOfResources.Create(SNoTimers); end; А если бы там была бы иная строчка if SetTimer(0, 1, FInterval, @SomeTimerProc) = 0 then что вполне возможно для некоей невиндовой платформы, то и в этом случае SomeTimerProc() будет вызываться в контексте того и только того потока, который вызвал ф-цию SetTimer()
0
|
||
| 30.07.2013, 17:31 | |
|
Не по теме: mss, я не про то, а про кривожопость реализации, забавно что до сих пор через WM работает VCL
0
|
|
| 30.07.2013, 17:48 | ||
|
Не по теме:
Нормальная реализация, для формошлепства самое то) А для спецразработок существуют сторонние альтернативные реализации классов для работы с таймером.
0
|
||
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
|
||
| 30.07.2013, 20:00 | ||
|
0
|
||
|
3764 / 2272 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
|
||
| 31.07.2013, 00:30 | ||
ПС: А вообще интересно, отсчет в самом таймере начинается снова с момента выхода из события или как-бы независимо от события. Надо поковырятся.
0
|
||
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
||
| 31.07.2013, 01:09 | ||
|
Отсчет периодов, равных зн-ю св-ва Interval, начинается с момента Enabled=True и заканчивается в момент Enabled=False, вне зависимости от того как долго исполняется обработчик OnTimer и назначен ли он вообще. Добавлено через 7 минут Все что делается в момент истечения очредного периода - это отправка сообщения WM_TIMER в очередь сообщений невидимого окна. Причем система при запросе на постановку WM_TIMER в очередь сначала проверяет нет ли в ней уже такого сообщения и игнорирует запрос, если WM_TIMER уже есть в очереди окна. А то что происходит далее - это уже забота потока, создавшего это невидимое окно: вовремя выгребет из очереди WM_TIMER - вовремя и событие OnTimer возникнет, невовремя выгребет или вообще не выгребет (будучи занят в это время чем-то хз более архиважным ) - невовремя соотв-но и OnTimer возникнет или вообще не возникнет.
0
|
||
| 31.07.2013, 01:16 | |
|
Не по теме: mss, что дважды изврат, кучу окон плодить. Даже в WINAPI SetTimer есть параметр - ID получателя, ну или WM_USER и допбайты в сообщении, всё можно валить на хотя бы Parent если оно TForm.
0
|
|
|
134 / 133 / 22
Регистрация: 29.08.2012
Сообщений: 353
|
|||||||
| 31.07.2013, 01:18 | |||||||
|
я тут в отпуске был, у меня голова чет не варит:
после этого цикла врубать таймер с интервалом 100, и проверять прошел ли час, если да то запустить цикл, время фиксировать можно как до, так и после цикла, если следить за каждой итерацией цикла то наверно нужно где то хранить временные интервалы на каждом шаге, тогда for не подойдет, я бы наверно сделал через дин.массив, с размерностью равной количеству итераций до блокировки в котором хранил бы временые точки, циклически проверял бы этот массив через while, и перед шагом проверял бы прошел ли час после обращения к текущей ячейке массива, если нет то все как раньше, включили таймер с интервалом 100 и запомнили тот элемент на котором остановились, прошел час-"занулили попытку, запустили цикл"...
0
|
|||||||
| 31.07.2013, 01:18 | |
|
Прерывание цикла Прерывание цикла Прерывание цикла
Прерывание цикла! Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|