OberonCore
https://forum.oberoncore.ru/

Bug or not Bug?
https://forum.oberoncore.ru/viewtopic.php?f=24&t=796
Страница 1 из 1

Автор:  hothing [ Среда, 26 Декабрь, 2007 15:04 ]
Заголовок сообщения:  Bug or not Bug?

Переделал стандартный ObxWrappers таким образом, чтобы он сбрасывал в лог названия сообщения приходящих виду. Как только добавил StdLog.Ln "обернутый" вид начал сбоить (TRAP).
Код:
PROCEDURE (v: View) HandleCtrlMsg (f: Views.Frame; VAR msg: Controllers.Message; VAR focus: Views.View);
   BEGIN
      (* here comes the behavior which is specific to this wrapper -
         it modifies the wrapped view's behavior *)
      WITH
         msg: Controllers.EditMsg DO StdLog.Msg('--> EditMsg');StdLog.Ln;
         |msg: Controllers.SelectMsg DO   StdLog.Msg('--> Selection');StdLog.Ln;
         |msg: Controllers.TrackMsg DO StdLog.Msg('--> Track');StdLog.Ln;
         |msg: Controllers.TransferMessage DO StdLog.Msg('--> TransferMessage');StdLog.Ln;
         |msg: Controllers.PollDropMsg DO StdLog.Msg('--> PollDropMsg');StdLog.Ln;
         |msg: Controllers.DropMsg DO StdLog.Msg('--> DropMsg');StdLog.Ln;
         |msg: Controllers.WheelMsg DO StdLog.Msg('--> WheelMsg');StdLog.Ln;
         |msg: Controllers.PollSectionMsg DO StdLog.Msg('--> PollSectionMsg');StdLog.Ln;
         |msg: Controllers.PollFocusMsg DO StdLog.Msg('--> PollFocusMsg');StdLog.Ln;
         |msg: Controllers.PollOpsMsg DO StdLog.Msg('--> PollOpsMsg');StdLog.Ln;
         |msg: Controllers.ScrollMsg DO StdLog.Msg('--> ScrollMsg');StdLog.Ln;
         |msg: Controllers.PageMsg DO StdLog.Msg('--> PageMsg');StdLog.Ln;
         |msg: Controllers.TickMsg DO StdLog.Msg('--> TickMsg');StdLog.Ln;
         |msg: Controllers.MarkMsg DO StdLog.Msg('--> MarkMsg');StdLog.Ln;
         |msg: Controllers.RequestMessage DO StdLog.Msg('--> RequestMessage');StdLog.Ln;
         |msg: Controllers.ReplaceViewMsg DO StdLog.Msg('--> ReplaceViewMsg');StdLog.Ln;
         |msg: Controllers.CursorMessage DO StdLog.Msg('--> CursorMessage');StdLog.Ln;
         |msg: Controllers.PollCursorMsg DO StdLog.Msg('--> PollCursorMsg');StdLog.Ln;
      ELSE
      END;            
      focus := v.inner   (* forward all controller messages to wrapped view *)
   END HandleCtrlMsg;


В чем может быть причина?

Автор:  Илья Ермаков [ Среда, 26 Декабрь, 2007 17:18 ]
Заголовок сообщения:  Re: Bug or not Bug?

Кстати, Info->Message Spy...позволяет отслеживать сообщения.
По поводу Ln - с ходу не скажу, а что за Trap?

Автор:  Сергей Губанов [ Четверг, 27 Декабрь, 2007 11:39 ]
Заголовок сообщения:  Re: Bug or not Bug?

hothing писал(а):
...В чем может быть причина?

Можно было написать покороче:
Код:
PROCEDURE (v: View) HandleCtrlMsg (f: Views.Frame; VAR msg: Views.CtrlMessage; VAR focus: Views.View);
  VAR name: ARRAY 100 OF CHAR;
BEGIN Services.GetTypeName(msg, name); Log.String(name); Log.Ln
END HandleCtrlMsg;

Зато теперь, коль скоро вы расписали типы явно, то закомментировав лишнее вы можете отыскать сообщение при ловле которого происходит авария.

Автор:  hothing [ Пятница, 28 Декабрь, 2007 18:01 ]
Заголовок сообщения:  Re: Bug or not Bug?

Сергей, спасибо. Буду польоваться.

2Илья. К сожалению, уже не помню, вроде 2х. Спасибо, попробую Спай.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/