|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
21.04.2018, 12:38 | #1 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,550
|
Main в Delphi ?
Странный вопрос возник вдруг.
Есть некая прога, которая непрерывно генерирует число по какому - то закону (не принципиально). По нажатию кнопки число заносится в массив, инкрементируется индекс. По достижению некоторого количества набранных значений перехожу к анализу массива. В процедурно-ориентированном языке (Си, к примеру) непрерывную генерацию организовал бы в главной процедуре main, в которую периодически "нырял" бы за извлечением очередного значения. Но в Delphi главной процедуры как бы и нет, т.е. она есть - ожидание событий в бесконечном цикле - но в нее не попасть программно ? Сейчас я генерирую число по таймеру. Но если, к примеру, кнопка будет нажиматься достаточно регулярно (внешним устройством), то 2 регулярных процесса создадут некую интерференцию, наложение, и полученная последовательность будет очень не случайной. Можно, конечно, интервалы таймера менять случайным образом, но это как-то "левой ногой", да и 1мс интервал может быть великоват. Есть выход, которого я не вижу пока ? PS попробовал закинуть генерацию в OnActivate, но когда начинает эту генерацию - ничего уже не слышит, как тетерев на току. |
21.04.2018, 12:46 | #2 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Как это нет? А в .dpr что?
Но я не понял как вам Main поможет. Можно поток создать (Thread).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
21.04.2018, 12:51 | #3 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Код:
А так же есть же структура юнита вот можете поместить свой код в initialization Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
21.04.2018, 12:56 | #4 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,550
|
Спасибо, есть направление думать.
Насчет .dpr - это же файл проекта, там вообще кода нет? С потоками дел пока не имел, буду пробовать. |
21.04.2018, 13:13 | #5 | ||
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Цитата:
Цитата:
Правда от такого подхода смысла мало, если у вас внешнии устройства завязаны на времени. То получится что числа не случайны а зависят от времени. Зная алгоритм их достаточно хорошо можно предсказывать.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
||
21.04.2018, 13:22 | #6 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,550
|
Кстати, код метода Execute потока имеет доступ к глобальным переменным? Интуевина подсказывает, что да - иначе зачем он нужен?
|
21.04.2018, 13:34 | #7 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Так откройте и посмотрите что там.
Может от версии Дельфи зависит как файл называется, но формы вообще-то не сами создаются.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
21.04.2018, 13:40 | #8 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Путаете *.dpr с *.dproj
Но begin end можно написать не только в dpr но в и в модуле. Доступ к глобальным переменным имеет. Только что-бы не было проблем общие переменные, а глобальные считай общие переменные подлежат защите. Перед доступом следует войти в критическую секцию кода и после доступа выйте из критической секции кода.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . Последний раз редактировалось Pavia; 21.04.2018 в 13:47. |
22.04.2018, 11:04 | #9 | |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,550
|
Ни в одной папке с моими проектами нет *.dproj . Возможно, это в новых Дельфях, а у меня старушка 7-я .
Цитата:
Думаю, не так все страшно в моем случае. Я не планирую банковские транзакции, чтобы бояться коллизий. Речь идет о простой программе моделирования электронного устройства, модель его перед сборкой решил обкатать на компе. Вот освою (надеюсь) потоки, в нем будет крутиться генератор чисел (запись), по кнопке будет забираться число (чтение), так что подраться вроде они не должны. Вот закончаться субботники - прямо и начну. Последний раз редактировалось digitalis; 22.04.2018 в 11:11. |
|
22.04.2018, 11:13 | #10 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Это ж основы работы с потоками.
Ни разу не слышали про mutex или lock или "критические секции" (TCriticalSection в Дельфи) и прочие способы синхронизации?оО http://forum.vingrad.ru/forum/topic-60076.html
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
main | Rick Sanchez | Общие вопросы C/C++ | 1 | 05.12.2017 14:12 |
С# Windows.Forms Программа содержит более одной указанной точки входа: "Program.Main()". Скомпилируйте с /main, чтобы указать тип | Maray | Windows Forms | 6 | 06.04.2016 07:07 |
Exception in thread "main" java.lang.NullPointerException at Main.main(Main.java:9) | elpilasgsm | Помощь студентам | 4 | 18.01.2011 08:23 |
массив delphi с элементами main menu и striggrid | elucia | Помощь студентам | 0 | 10.05.2010 22:51 |
Функция main и main(void) | Pord | Помощь студентам | 1 | 11.12.2008 15:57 |