Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Oberon
Перезагрузить страницу Модуль Views. Процедуры Old и OldView
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
sacred1972 sacred1972 вне форума
Member
 
Сообщений: 21
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.07.2005
По умолчанию Модуль Views. Процедуры Old и OldView - 21.07.2005, 20:35

Что-то я ничего не понимаю. Процедура Old вызывает OldView для получения указателя на View, однако OldView сама, в свою очередь вызывает Old для той же цели и главное нигде не видно, чтобы использовались значения путей к файлу и его имени, как, впрочем и остальных параметров, кроме как для передачи их друг другу по кругу.
Понятно, что я ошибаюсь. Непонятно где?
Ответить с цитированием
  (#2 (permalink)) Старый
S.Yu.Gubanov S.Yu.Gubanov вне форума
Member
 
Сообщений: 587
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.12.2002
По умолчанию Re: Модуль Views. Процедуры Old и OldView - 22.07.2005, 11:00

Цитата:
Originally posted by sacred1972
[b]...Процедура Old вызывает OldView для получения указателя на View...
OldView вызывает Old, но Old вызывает не OldView, а метод viewHook.OldView, причем viewHook - есть:
Код:
ViewHook* = POINTER TO ABSTRACT RECORD (Kernel.Hook) END;
и возникает он откуда-то неизвестно откуда:
Код:
PROCEDURE SetViewHook* (h: ViewHook);
BEGIN
  viewHook := h
END SetViewHook;
впрочем, это относится ко всем хукам...
Ответить с цитированием
  (#3 (permalink)) Старый
sacred1972 sacred1972 вне форума
Member
 
Сообщений: 21
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.07.2005
По умолчанию Re: Модуль Views. Процедуры Old и OldView - 22.07.2005, 12:11

Цитата:
Originally posted by S.Yu.Gubanov
[b]OldView вызывает Old, но Old вызывает не OldView, а метод viewHook.OldView, причем viewHook - есть:
Код:
ViewHook* = POINTER TO ABSTRACT RECORD (Kernel.Hook) END;
и возникает он откуда-то неизвестно откуда:
Код:
PROCEDURE SetViewHook* (h: ViewHook);
BEGIN
  viewHook := h
END SetViewHook;
впрочем, это относится ко всем хукам...
Это видел. Но!
Поиск по исходникам вызова SetViewHook дал только 1 (!) результат. И выглядит этот результат более, чем странно:
Код:
 
    PROCEDURE Init;
  VAR h: ViewHook;
    BEGIN
  NEW(h); Views.SetViewHook(h);
    END Init;

BEGIN
    Init
END StdDialog.
Складывается ощущение, что в исходниках есть не всё...
Отсюда вопрос: на чём написан BlackBox ?
Может ли он скомпилировать сам себя?
Ответить с цитированием
  (#4 (permalink)) Старый
S.Yu.Gubanov S.Yu.Gubanov вне форума
Member
 
Сообщений: 587
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.12.2002
По умолчанию Re: Модуль Views. Процедуры Old и OldView - 22.07.2005, 14:04

Цитата:
Originally posted by sacred1972
[b]Поиск по исходникам вызова SetViewHook дал только 1 (!) результат.
Подскажите пожалуйста, в каком модуле нашли?
Ответить с цитированием
  (#5 (permalink)) Старый
sacred1972 sacred1972 вне форума
Member
 
Сообщений: 21
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.07.2005
По умолчанию Re: Модуль Views. Процедуры Old и OldView - 22.07.2005, 14:21

Цитата:
Originally posted by S.Yu.Gubanov+-->
Цитата:
<!--QuoteBegin-sacred1972
Цитата:
[b]Поиск по исходникам вызова SetViewHook дал только 1 (!) результат.
Подскажите пожалуйста, в каком модуле нашли?
StdDialog
Версия BlackBox 1.5 beta c оф. сайта
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
S.Yu.Gubanov S.Yu.Gubanov вне форума
Member
 
Сообщений: 587
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.12.2002
По умолчанию Re: Модуль Views. Процедуры Old и OldView - 22.07.2005, 14:47

Цитата:
Originally posted by sacred1972
[b]StdDialog
Спасибо.

1) При линковке отдельностоящего exe-шника, модуль StdDialog обязателен.

2) В части хелпа: Platform-Specific Issues (Windows) в разделе Startup of BlackBox третий шаг такой:

Step 3: Init loads the BlackBox library and core framework
The standard implementation of module StdLoader performs a call to module Init in its body.

Если пробежаться по списку импорта модуля (System)Init:
(System)Init ---> HostMenus ---> StdDialog
то обнаруживаем, что модуль StdDialog загружается при старте системы.
Значит объект ViewHook прописывается раз и навсегда.

Вроде всё понятно.
Ответить с цитированием
  (#7 (permalink)) Старый
sacred1972 sacred1972 вне форума
Member
 
Сообщений: 21
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.07.2005
По умолчанию Re: Модуль Views. Процедуры Old и OldView - 22.07.2005, 15:04

Цитата:
Originally posted by S.Yu.Gubanov
[b]Вроде всё понятно.
Мне что-то не очень понятно...
Код:
KERNEL:
  Hook* = POINTER TO ABSTRACT RECORD END;
А где, собственно, процедура OldView? Которая вызывается для этого самого viewHook ?
Ответить с цитированием
  (#8 (permalink)) Старый
S.Yu.Gubanov S.Yu.Gubanov вне форума
Member
 
Сообщений: 587
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.12.2002
По умолчанию Re: Модуль Views. Процедуры Old и OldView - 22.07.2005, 15:31

Цитата:
Originally posted by sacred1972
[b]А где, собственно, процедура OldView? Которая вызывается для этого самого viewHook ?
Kernel:
Hook* = POINTER TO ABSTRACT RECORD END;

Views:
ViewHook* = POINTER TO ABSTRACT RECORD (Kernel.Hook) END;

StdDialog:
ViewHook = POINTER TO RECORD (Views.ViewHook) END;

StdDialog:
Код:
    PROCEDURE (h: ViewHook) OldView (loc: Files.Locator; name: Files.Name;
                VAR conv: Converters.Converter): Views.View;
  VAR w: Windows.Window; s: Stores.Store; c: Converters.Converter;
    BEGIN
  ASSERT(loc # NIL, 20); ASSERT(name # "", 21);
  Kernel.MakeFileName(name, ""); s := NIL;
  IF loc.res # 77 THEN
      w := Windows.dir.First(); c := conv;
      IF c = NIL THEN c := Converters.list END;    (* use document converter *)
      WHILE (w # NIL) & ((w.loc = NIL) OR (w.name = "") OR (w.loc.res = 77) OR
              ~Files.dir.SameFile(loc, name, w.loc, w.name) OR (w.conv # c)) DO
    w := Windows.dir.Next(w)
      END;
      IF w # NIL THEN s := w.doc.ThisView() END
  END;
  IF s = NIL THEN
      Converters.Import(loc, name, conv, s);
      IF s # NIL THEN RecalcView(s(Views.View)) END
  END;
  IF s # NIL THEN RETURN s(Views.View) ELSE RETURN NIL END;
    END OldView;
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Процедуры))) mozhik Pascal 0 06.11.2011 00:21
Модуль лупи Pascal 1 09.09.2011 04:44
Процедуры в Asm stas135642 Задания за деньги 7 23.05.2011 16:55
Процедуры swillrocker Pascal 0 20.05.2011 00:58
Процедуры и функции demaning Pascal 0 04.05.2011 19:08
итерационные процедуры. задача( imported_vfhbyf Prolog 0 18.04.2011 21:19
Модуль imported_Yulka Pascal 0 18.04.2010 18:58
Процедуры!спасите! Victorija 2707 Pascal 2 09.03.2010 20:33
Исключить выполнение процедуры kminas Visual Basic 2 18.01.2008 15:10
3d игра: процедуры vs ООП TNT Программирование графики 7 02.02.2005 19:18



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов