|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
24.08.2015, 22:36 | #1 |
Регистрация: 05.12.2012
Сообщений: 6
|
Как определить что изначальное значение равное нулю изменилось и снова стало нулем
Доброго всем времени суток!
Уважаемые знатоки, пожалуйста, помогите разобраться и решить поставленную задачу: - Имеется целое число, изначально являющееся нулевым, но которое может изменить свое значение на случайное. Случайное значение может быть больше нуля или меньше него, но это не важно. Самое главное, это определить что значение изменилось и вновь вернулось в исходное состояние, т.е. вернулось в ноль. Мне надо определить что изначальное значение равное нулю изменилось и снова стало нулем. К примеру, если изначальное значение равно нулю, программа ведет себя спокойно. Если значение изменилось и вновь вернулось в нулевое, то каким либо образом надо сигнализировать об этом. |
24.08.2015, 22:53 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Ну только в таймере или потоке просматривать это значение в цикле.
Нет механизмов события на изменение переменной. Всякие отладочные точки прерывания, хардврные или за счет отлова исключения при обращении к заблокированной памяти не считаются. Мониторить конечно можно (Отладчики спокойно это умеют), но каких-то пользовательских общепринятых средств в нативных языках не предусмотрено.
I'm learning to live...
|
24.08.2015, 22:55 | #3 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Вот прям возьмет и само себя внезапно изменит?
Сделайте метод изменения числа (и заодно можно его сделать private полем) и изменяйте только через него. Ну и в нем определяйте что вам надо, генерируйте события и т.п.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
25.08.2015, 02:29 | #4 | ||
Регистрация: 05.12.2012
Сообщений: 6
|
Хочу сразу извиниться что не указал примеры исходного кода для поставленной задачи. Постараюсь это сейчас исправить...
Цитата:
Цитата:
Код:
Проверка будет проходить в теле цикла с постусловием, где надо определить что изначальное значение равное нулю изменилось и снова стало нулем, и каким нибудь образом сигнализировать каждый раз как оно вернется в ноль. Последний раз редактировалось ShevlyakoV; 25.08.2015 в 17:41. |
||
25.08.2015, 05:50 | #5 |
Форумчанин
Регистрация: 01.06.2015
Сообщений: 497
|
Может не совсем правильно понял, но нельзя ли просто запоминать предыдущее значение переменной, и в случае если оно было не 0, а новое значение 0, тогда выполнять нужные Вам действия?
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
|
25.08.2015, 08:53 | #6 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
25.08.2015, 17:40 | #7 | |
Регистрация: 05.12.2012
Сообщений: 6
|
Честно говоря, я не совсем понял ход ваших мыслей...
Цитата:
Вот реализованный мною пример программного кода: Код:
- 1-я для предыдущего значения; - 2-я для текущего значения. В случаи если текущее изначальное значение равно нулю, то нечего не происходит, но если значение изменилось и вновь стало равно предыдущему, в этом случаи прозвучит сигнальный звук из системного динамика. Теперь, у меня только один вопрос: - Всели правильно я сделал или есть более рациональный/лучший способ? Последний раз редактировалось ShevlyakoV; 25.08.2015 в 17:43. |
|
25.08.2015, 17:53 | #8 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Ну в том и была мысль Стилета, про поток (TThread) это только если вам надо не блокировать основной поток (например UI) этим циклом.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
25.08.2015, 17:53 | #9 |
Форумчанин
Регистрация: 01.06.2015
Сообщений: 497
|
А у Вас этот код выполняется не в отдельном потоке?
Но тут может быть еще одна проблема. Считывание через ReadProcessMemory переменной не гарантирует, что мы сможем отследить все ее изменения, даже если такое считывание будет происходить в цикле без всяких задержек.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
|
25.08.2015, 18:02 | #10 | |
Регистрация: 05.12.2012
Сообщений: 6
|
Цитата:
На самом деле в теле цикла есть небольшая задержка, она равна 40 миллисекунд. Данного отрезка времени вполне хватает что бы цикл выполнялся не поглощая при этом все ресурсы системы и успевал обрабатывает функцию чтения. Просто, я забыл указать это в своих предыдущих сообщениях, за что и приношу свои извинения. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Дана последовательность ненулевых целых чисел,оканчивающая нулем.Определить,сколько раз в этой последовательности меняеться знак.( | Salomon9393 | Помощь студентам | 0 | 07.12.2012 18:59 |
javascript изменить значение переменной (пр:было 1234 стало 12341234) | marianna14 | Помощь студентам | 2 | 27.03.2011 12:24 |
Страница стала намного длиннее что стало причиной? | slawok | HTML и CSS | 7 | 20.05.2010 22:56 |
Ах, что-то с памятью моей стало (Delphi 7) | alxd | Помощь студентам | 7 | 22.09.2009 13:15 |