purebasic.info

PureBasic forum
Текущее время: Вс окт 20, 2019 9:13 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 36 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
 Заголовок сообщения: Re: загадка для вундеркиндов
СообщениеДобавлено: Чт окт 10, 2019 6:28 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6552
Благодарил (а): 29 раз.
Поблагодарили: 221 раз.
Пункты репутации: 59
На первый взгляд должно каждую секунду выскакивать новое сообщение "Привет мир".

_________________
read-only ¯\_(ツ)_/¯


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: загадка для вундеркиндов
СообщениеДобавлено: Чт окт 10, 2019 11:28 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11536
Благодарил (а): 4 раз.
Поблагодарили: 473 раз.
Это не очевидно. И если с MessageRequester заметить легко, с другими функциями найти в чем причина будет гораздо сложнее.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: загадка для вундеркиндов
СообщениеДобавлено: Чт окт 10, 2019 2:06 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6552
Благодарил (а): 29 раз.
Поблагодарили: 221 раз.
Пункты репутации: 59
Пётр писал(а):
другими функциями найти в чем причина будет гораздо сложнее.

Причина чего?
По событию #PB_Event_Timer, которое возникает каждую секунду, вызывается процедура Timer()
Как это ещё можно трактовать по другому, мне интересно?

_________________
read-only ¯\_(ツ)_/¯


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: загадка для вундеркиндов
СообщениеДобавлено: Чт окт 10, 2019 2:26 pm 
Не в сети
профессор

Зарегистрирован: Сб фев 06, 2016 6:18 pm
Сообщений: 330
Благодарил (а): 14 раз.
Поблагодарили: 40 раз.
Пункты репутации: 2
Да, интересный случай, @Timer() - указатель на процедуру, но по факту это поток. А поток требует *Value, но в данном случае это процедура (хоть и работает как поток).
P.S. Я не вундеркинд поэтому код запускал :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: загадка для вундеркиндов
СообщениеДобавлено: Чт окт 10, 2019 3:03 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11536
Благодарил (а): 4 раз.
Поблагодарили: 473 раз.
kvitaliy писал(а):
Как это ещё можно трактовать по другому, мне интересно?
Сравните результат работы с этим кодом.
Код:
1
2
3
4
5
6
7
8
9
10
OpenWindow(0, 0, 0, 400, 100, "Пример таймера", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
AddWindowTimer(0, 123, 1000)
Repeat
  Event = WaitWindowEvent()
 
  If Event = #PB_Event_Timer And EventTimer() = 123
    MessageRequester("", "Привет мир")
  EndIf  
 
Until Event = #PB_Event_CloseWindow



repeat писал(а):
но по факту это поток.
Код выполняется в одном потоке, а множество окон MessageRequester из-за рекурсивного вызова процедуры, которое возможно из-за наличия у MessageRequester обработчика событий окна.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: загадка для вундеркиндов
СообщениеДобавлено: Чт окт 10, 2019 6:15 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6552
Благодарил (а): 29 раз.
Поблагодарили: 221 раз.
Пункты репутации: 59
Пётр писал(а):
Сравните результат работы с этим кодом.
Код:
1
2
3
4
5
6
7
8
9
10
OpenWindow(0, 0, 0, 400, 100, "Пример таймера", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
AddWindowTimer(0, 123, 1000)
Repeat
  Event = WaitWindowEvent()
 
  If Event = #PB_Event_Timer And EventTimer() = 123
    MessageRequester("", "Привет мир")
  EndIf  
 
Until Event = #PB_Event_CloseWindow



Сказать честно, там по мне вот этот код работает странно :D
По всей видимости справка по отношению к BindEvent это объясняет:
Цитата:
Он позволяет получать уведомления о событиях в реальном времени, поскольку процедура обратного вызова может быть вызвана сразу же после возникновения события.

Т.е. не зависит от обработчика кода в основном потоке программы на Пурике.

_________________
read-only ¯\_(ツ)_/¯


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 36 ]  На страницу Пред.  1, 2, 3

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB