|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.09.2018, 11:28 | #1 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,555
|
Главный цикл
Возможно, этот вопрос уже был, не исключено даже, что от меня, но склероз, и Гуголь не в помощь
Крутится бесконечный цикл, из него по клику мыши извлекаются значения и что-то с ними делаем. Так вроде в Дельфи главного цикла и нету, по крайней мере в *.pas ? Как бы его организовать, и желательно - без потоков ? Таймер - не совсем клево, мин. интервал 1мс - многовато. В OnActivate c применением ApplicationMessage ? Что делать, и в перезрелые годы чайникизм не исключен Последний раз редактировалось digitalis; 20.09.2018 в 11:32. |
20.09.2018, 11:43 | #2 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Как это нету? А как же оно тогда сообщения обрабатывает?
Смотрите внимательнее в dpr. ...но вряд ли он вам нужен. Отдельный поток удобнее и логичнее всего, но наверно можно и просто цикл где угодно в UI потоке и чтобы не висел UI вызывать Application.ProcessMessages. Но скорее всего лучше просто таймер, зачем зря грузить процессор? Что вы такое странное делаете?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
20.09.2018, 12:04 | #3 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,555
|
Не буду говорить, а то станете смеяться Моделирую реализацию "игральной кости" на микроконтроллере, чтобы убедиться, что интервал апериодичности достаточно хорош.
Потоками заниматься уже не буду, бо "старую собаку не научишь новым фокусам " © Сейчас генерирую непрерывный поток ПСЧ таймером 1мс, а выборку делаю другим со случайно изменяемым интервалом. Но модель получается не совсем корректной, т.к. таймеры не совсем независимы. Впрочем, для такой смешной задачи этого м.быть и хватит. И все-таки мучает вопрос: куда впиндюрить код что-то вроде N := (N+137) and 65535 - и без потоков, чтоб он крутился "вечно", но к нему был доступ из обработчика? Или it is impossible ? A .dpr - так вот он весь: Код:
Последний раз редактировалось digitalis; 20.09.2018 в 12:17. |
20.09.2018, 13:25 | #4 |
Участник клуба
Регистрация: 03.06.2009
Сообщений: 1,815
|
сделай цикл
Код:
и будет он тебе вечно крутиться
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
|
20.09.2018, 13:28 | #5 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Писать то можно и просто True вместо условия. Без пауз такой цикл процессор полностью загрузит. И в потоке или таймере
Цитата:
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 20.09.2018 в 13:46. |
|
20.09.2018, 15:47 | #6 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Кладёте на форму компонент ApplicationEvents, в обработчики OnIdle пишете тело вашего цикла и в конце done:=False; тогда код будет вызваться в цикле после всех сообщений.
Для примера периодический опрос ком-мыши. Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
20.09.2018, 16:00 | #7 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 977
|
какая странная постановка вопроса... чем тебе random не понравился? в нём и интервал значений разный есть.
Хорошо допустим тебе надо видуализацию стандартной кости (что бы теоретически пользователь мог иметь возможность остановить на нужном значении). тогда проще всего джеди компонент использовать. JvDice. там свойство инетрвал смены числа и интервал задержки и прочее.
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
|
20.09.2018, 18:31 | #8 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,555
|
Блин, так и ждал - когда же обсуждение "как сделать?" свихнется на "а на хрена тебе оно сдалось? ". Ждать пришлось недолго. В "кубике" не будет ни джеди (чо такое -хз , не дай бог ночью приснится), ни JvDice, ни рандом, ни даже компа вообще! Будет коробочка с 1 кнопочкой и 14 светодиодами, управляется весь этот зоопарк МК-шкой с 1кб программной флеши и 128 байт (не МБ!) ОЗУ. Так что ООП, классы, полиморфизьм и стандартные либы, понурившись, идут мимо. Тестируется алгоритм, а не будущая прога для ПК.
Pavia, thanks, но я ничего не понял, код должен начинать работу сразу после Activate и заканчиваться при закрытии формы, не реагируя ни на какие другие события, но позволяя считывать из себя текущее значение переменной. Код:
Код:
ApplicationEvents1Idle - почитаю, что это за зверь, если найду. Аватар кажется, мы пошли по второму кругу. Ясно, что Application.Run запускает то, что прописано в .pas. Но там прописаны только обработчики событий. Так что "мега-оператор" Application.Run выполняет функцию вахтера: сиди молча и жди, произойдет событие - обработчик его выполнит - и опять "сижу, куру" . А если не "сиди и жди", а в фоновом режиме, к примеру, "вяжи внучке носочки" - как это объяснить этому Application.Run, в какие файлы расписать? Какой метод компонента Forms ? В общем, я так понял - миссия невыполнима. Или нужно делать шаманские телодвижения, на пару порядков сложнее Рунге-Кутта или Фурье. Можем закрывать. Мне проще спаять дивайсик и проверить на железе живьем. Спасибо за обсуждение. PS если кто скажет, что такой примитив можно сделать вообще без МК, соглашусь немедленно и даже дюжину схем нарисую. но мы же не в radiokot.ru Последний раз редактировалось digitalis; 20.09.2018 в 19:07. |
20.09.2018, 18:38 | #9 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Название популярной большой библиотеки компонентов для Дельфи.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
20.09.2018, 19:13 | #10 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,555
|
Не, в микроконтроллер либы ни из Дельфи, ни из Питона или ЛИСП не лезут.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не определяется главный класс | PastoriXx | Общие вопросы по Java, Java SE, Kotlin | 3 | 21.04.2011 18:46 |
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) | Mr.User | Помощь студентам | 9 | 23.11.2007 01:34 |