  
     1. Введение
     
     Система Object  Professional  представляет  собой самое последнее
поколение той библиотеки, которая считается, как мы полагаем, основной
библиотекой подпрограмм для программистов, использующих Turbo  Pascal.
Эта серия библиотек хорошо известна уже в течение приблизительно  пяти
лет, и в течение всего этого времени она постоянно и очень быстро раз-
вивалась  (подобно тому, как растет пятилетний ребенок), расширяя свои
возможности и приобретая новые функции.
     
     Появление системы Turbo Pascal версии 5.5 фирмы Borland  имело  -
так  же,  как  это  было  и  с  многими  другими ее разработками - для
TurboPower Software одновременно и положительные, и отрицательные сто-
роны. Положительным фактором явилось то, что  эта  система  вводила  в
Паскаль  характерные черты объектно-ориентированного программирования.
Несмотря на то, что до этого никто из нас не  выполнял  сколько-нибудь
серьезных  разработок  на  основе ООР, мы быстро стали самыми горячими
сторонниками этого подхода. (Прим. перев.: "OOP" -  "объектно-ориенти-
рованное    программирование"    от    английского    "object-oriented
programming".) Такое увлечение имело, однако, и свою негативную сторо-
ну: мы решили практически полностью переписать все подпрограммы систе-
мы Turbo Professional, где только это было  целесообразно,  в  объект-
но-ориентированную  форму.  И  очень  быстро эта работа по составлению
программ и особенно по  оформлению  документации  поглотила  нас  пол-
ностью.

     Однако работа, наконец, была завершена, и мы полагаем, что ее ре-
зультаты  Вас заинтересуют. Широту охвата разработанного пакета Вы мо-
жете почувствовать  хотя бы на основе веса подготовленных руководств и
объема печати, но можно привести и  некоторые  статистические  данные:
пакет  Object Professiоnal содержит свыше 50 модулей, 130 типов объек-
тов, 2100 документально описанных процедур, функций  и  методов,  1200
дополнительных внутренних подпрограмм и больше 1600 страниц текста до-
кументации. Добавим к этому более десятка высококачественных  демонст-
рационных и сервисных программ, десятки предваряющих программ-примеров
и  находящуюся резидентно в памяти исчерпывающую базу данных оператив-
ной информационной помощи. Это довольно крупный  "пятилетний малыш"!
                 

                             - 2 -
     Для того, чтобы быстро сориентироваться во  всем  этом  богатстве
информации,  мы рекомендуем использовать один из двух возможных спосо-
бов действия - в зависимости от уровня Вашей подготовки. Опытные поль-
зователи  системы  Turbo  Professional,  должны, безусловно, прочитать
Приложение А  "Что  нового в системе Object Professional версии 1.0?",
которое дает краткий обзор новых особенностей системы; вслед  за  этим
необходимо  посмотреть  Приложение F "Конвертирование прикладных прог-
рамм системы Turbo Professional". Новичкам следует  продолжить  чтение
настоящего введения, которое предоставит краткий обзор всех возможнос-
тей пакета Object Professional. Каждый пользователь должен обязательно
затем прочесть раздел С настоящей главы "Установка системы и программ-
ная  настройка"  и раздел D "Структура руководства". Очень важна также
глава 2 "Принципы организации"; она предоставляет  информацию  о  том,
как  организована библиотека и каковы те определяющие принципы, на ос-
нове которых она была сформирована. После этого  советуем  просмотреть
оглавление пособия и приступить к основательному изучению тех конкрет-
ных разделов, которые Вас интересуют.
     
     Все модули пакета Object Professional и демонстрационные програм-
мы могут быть отнесены к какой-либо одной из следующих широких  кате-
горий:
     
     Управление экраном и клавиатурой
     
     Модуль OPCRT является съемной программой замещения для  стандарт-
ного  модуля управления электронно-лучевой трубкой, который предлагает
несколько дополнительных возможностей и множество усовершенствований.
     
     OPCOLOR просто определяет  ряд  констант,  например,  таких,  как
"WhiteOnBlack"  и "BlackOnLtGray", которые могут быть использованы для
того, чтобы получить информацию о конкретных характеристиках атрибутов
отображения.
     
     OPMOUSE предлагает широкий набор подпрограмм  низкого  уровня,  с
помощью  которых проще осуществляется задача пополнения Ваших программ
средством поддержки манипулятора типа "мышь".
     

                             - 3 -
     OPCMD обеспечивает средства для преобразования кодов,  соответст-
вующих нажатиям на клавиши клавиатуры или на кнопки "мыши", в абстрак-
тные "команды", например, такие, как "переместить курсор вверх", "выб-
рать элемент", "выйти из программы" и т.п.
     
     Оконные объекты
     
     OPFRAME определяет несколько объектов, которые используются  сов-
местно  для того, чтобы создать окна с границами, тенями, заголовками,
линейками прокрутки и "горячими участками", которые можно использовать
посредством "мыши".
     (Прим. перев.:  под "горячими участками" понимаются такие позиции
или области внутри окна, воздействие на которые  с  помощью  указателя
"мыши" позволяет выполнять какие-либо операции.)
     
     Модуль OPWINDOW строится на базе модуля  OPFRAME  и  предназначен
для  того,  чтобы  создавать иерархию оконных объектов, включающую все
разнообразие окон от наиболее простых до таких, которые можно упаковы-
вать в стеки и размеры которых можно изменять, причем эти оконные объ-
екты способны распознавать ввод с клавиатуры. OPWINDOW также обеспечи-
вает объекты, необходимые для управления виртуальными экранами и  сжа-
тыми экранными образами.
     
     OPPICK отображает  на  экране  дисплея "списки для выбора" ("pick
lists"), окна всплывающих подменю, содержащие списки элементов, из ко-
торых пользователь может осуществлять выбор.
     
     OPDIR используется  совместно  с  модулем  OPPICK для того, чтобы
создать всплывающие списки, состоящие из названий файлов.
                                                                  
     OPMENU  позволяет Вам быстро и легко создавать усложненные много-
уровневые системы меню.
     
     OPHELP предоставляет Вам  возможность  создавать  с  минимальными
затратами  сил системы контекстно-зависимой оперативной информационной
помощи.
     

                             - 4 -
     Использовать эти модули помогают три сервисные программы: PSCREEN
представляет  собой находящуюся резидентно в памяти программу, которая
отбирает тексты с экрана и помещает их в файл в сжатой форме; MAKEMENU
позволяет Вам проектировать в диалоговом режиме системы меню  и  затем
генерирует для них исходные программы; и, наконец, MAKEHELP компилиру-
ет  тексты  контекстно-зависимой  оперативной  информационной помощи в
сжатые индексные файлы для использования их с помощью модуля OPHELP.
     
     Объекты текстовых редакторов
     
     OPMEMO предлагает простой редактор текстов свободной формы, кото-
рый является превосходным средством для полей с деловыми "записями-за-
метками" в оффисных прикладных программах.
     
     OPEDITOR вплотную  приближается  к мощному редактору для програм-
мистов, который обеспечивает операции с блоками, поиск и замену,  рас-
становку текстовых маркеров и многое другое.
     
     OPBROWSE использует технологию виртуальной памяти для отображения
на экране двоичных или текстовых файлов произвольного размера.
     
     Три полезные демонстрационные программы - MEMO, EDITOR и BROWSE -
показывают, как использовать эти модули.
     
     Ввод данных
     
     OPSEDIT обеспечивает  обладающий  самыми  широкими  возможностями
строковый редактор для обработки ввода с помощью клавиатуры.
      
     OPEDIT предоставляет дополнительную возможность входного контроля
ввода данных по шаблону и ввода числовых данных.
     
     OPSELECT организует  группы полей внутри окна, управляя перемеще-
нием данных из одного поля в другое, но предоставляя Вам при этом воз-
можность контролировать все происходящее в каждом поле.
     
     OPENTRY представляет собой сочетание мощных строковых редакторов,

                             - 5 -
которые используются в модуле OPEDIT, и  программ  управления  окнами,
имеющихся  в  модуле  OPSELECT,  для получения очень сильного средства
ввода данных.
     
     OPDATE обеспечивает подпрограммы для работы с переменными, харак-
теризующими дату и время.
     
     MAKESCRN представляет собой мощную сервисную программу, с помощью
которой Вы можете в диалоговом режиме проектировать и генерировать ис-
ходные тексты программ для экранов ввода данных.
      
     Программы-примеры ENTRY и BEST показывают, как  можно  объединить
возможности модулей, используемых для ввода данных, при разработке вы-
сококачественных прикладных программ.
     
     Печать
     
     OPPRNLOW обеспечивает вывод выходных данных из Вашей программы на
принтер и возвращает информацию состояния для определения ошибок.
     
     OPPRINT предоставляет дополнительную возможность управления режи-
мами печати, шрифтами и управляющими последовательностями.
     
     OPDEVICE имеет подпрограммы, которые позволяют модулю OPPRINT ра-
ботать  на  конкретных  принтерах,  особенно  на  принтерах  Epson   и
LaserJet.
     
     OPFORM представляет  собой  принтерный эквивалент модуля OPENTRY,
обеспечивающий компоновку и печатание полей печати,  блоков,  страниц,
форм и отчетов.
     
     Программа-пример FORMTEST демонстрирует, как  применить  все  эти
идеи на практике.
     
     Объекты данных
     
     OPROOT определяет  ряд объектов общего назначения, к которым при-

                             - 6 -
верженцы ("afficionados")" OOP часто обращаются  как  к  "контейнерным
классам" -  стеков,  очередей,  списков,  наборов и т.д. Многие модули
системы Object Professional используют и расширяют эти объекты для то-
го, чтобы обеспечить возможности более высокого уровня; Вы можете  де-
лать это тоже.
     
     OPLARRAY позволяет Вам преодолеть ограничения размера  массива  в
64 К  в  объектно-ориентированном программировании, сохраняя заготовки
данных ("raw data") в оперативной памяти ("RAM"), в  памяти  типа  EMS
или  на  диске.  (Прим. перев.: по-видимому, под "EMS" подразумевается
такая расширенная  память,  которая  в  Turbo  Pascal  понимается  как
"Expanded Memory Specification"; в тексте встречаются далее такие тер-
мины для обозначения расширенной памяти, как "expanded" и "extended" -
в данном переводе эти английские термины  всегда  будут  приводится  в
круглых скобках вслед за соответствующим русским словом.)
     
     Обработка строк
     
     OPSTRING содержит  широкий набор основных подпрограмм для манипу-
лирования строками стандартного Turbo Pascal.
     
     OPASCIIZ представляет  собой  аналогичный модуль, который предос-
тавляет Вам возможность легко обрабатывать  строки  длиной  более  255
символов.
     
     OPSTRDEV позволяет Вам использовать стандартные операторы "Write"
для  создания форматированных строк.
     
     Интерфейс DOS/BIOS
     
     OPDOS предоставляет  Вам простой доступ к многим средствам систем
DOS и BIOS, к которым нельзя легко обратиться с  помощью  стандартного
модуля DOS.
     
     OPEXEC обеспечивает  подкачку  ("swapping") оболочки системы DOS,
что позволяет Вам временно упаковывать две программы  в  пространство,
отведенное для одной программы.

                             - 7 -
     
     OPENHKBD упрощает задачу написания программ, обеспечивающих рабо-
ту с расширенной клавиатурой.
     
     Прерывания и программы типа TSR
     
     OPINT управляет  Вашими  программами  обработки  прерываний   ISR
(прим. перев.:  от  "interrupt service routine", т.е. "программа обра-
ботки прерываний") по Вашему желанию.
     
     OPTSR содержит  все  необходимое  для того, чтобы написать с наи-
меньшими затратами высококачественные программы типа TSR.
     
     Еще более удивительные модули OPSWAP и OPSWAP1  образуют  систему
для написания подкачиваемых программ типа TSR, которые занимают  всего
лишь 6 Кбайт оперативной памяти системы DOS .
     
     OP8087 содержит подпрограммы низкого уровня, необходимые для  то-
го, чтобы написать программы типа TSR, которые используют математичес-
кую интегральную схему 80х87 или эмулятор TurboPascal с плавающей точ-
кой,  а также подпрограммы, которые позволяют Вам исправлять фатальные
арифметические ошибки другими способами.
     
     Сервисная программа  PTIME  демонстрирует,  каким  образом  можно
скомбинировать диалоговые программы обработки прерываний с программами
типа TSR, которые активизируются с помощью "горячих клавиш".
     
     Сервисная программа PSCREEN, уже упомянутая однажды, представляет
собой относительно простой пример подкачиваемой программы типа TSR.
     
     DESKPOP является  обладающей весьма широкими возможностями подка-
чиваемой программой типа TSR, которая размещает полный набор  программ
управления  настольными  средствами программиста в пространство опера-
тивной памяти (RAM) системы DOS объемом только в 6 Кбайт.

     Размещение памяти
     

                             - 8 -
     OPEMS предоставляет Вам легкий доступ  к  расширенной  (expanded)
памяти (EMS), в то время как OPEXTMEM разрешает использовать  защищен-
ные режимы на машинах "286" и "386", позволяя Вам использовать  расши-
ренную ("extended") память для хранения данных.
     
     Макрорасширения клавиатуры
     
     OPMACRO позволяет  Вам  легко  дополнить свои программы средством
макрорасширения клавиатуры, а модуль OPMACED содержит усложненный мак-
роредактор, согласованный с ним.
     
     Модуль OPREPLAY является потокостроковой версией модуля  OPMACRO,
который особенно  полезен для реализации функции вставки ранее удален-
ного текста в подкачиваемую программу типа TSR.
     
     Смешанные программы
     
     OPBCD обеспечивает широкий набор программ для выполнения  арифме-
тических  действий  с высокой точностью при использовании вещественных
чисел в двоично-десятичном коде BCD (прим. перев.: "BCD" - от  "Binary
Coded Decimal", т.е. "двоично-десятичный код").
      
     OPCLONE помогает  в  написании  самомодифицирующихся  программ  и
программ установки и настройки.
     
     OPERRHAN предоставляет средство, позволяющее Вам исправлять боль-
шинство ошибок, обнаруженных во время выполнения программы.
     
     OPINLINE содержит  набор  вручную  встроенных  макрорасширений, а
также некоторые программы для выполнения арифметических  операций  над
указателями.
     
     OPSORT предоставляет  Вам быструю нерекурсивную сортировку, кото-
рая работает почти с любыми типами данных.
     
     DPINST, представляющая собой программу установки и настройки  для
DESKPOP, показывает, каким образом нужно использовать модуль OPCLONE.

                             - 9 -
     
     A. Требования к системе
     
     Для того,  чтобы  использовать  настоящий пакет программ, в Вашем
распоряжении должны быть следующие средства:
     
     1. Персональный  компьютер фирмы IBM серии PC, XT, AT (или хорошо
совместимый с этими моделями) или  PS/2,  работающий  под  управлением
системы DOS версии 2.0 или более поздней.
     
     2. ТурбоПаскаль версии 5.5.
     
     3. Оперативная  память объемом по меньшей мере 512 Кбайт.  Мы на-
стоятельно рекомендуем иметь память объемом 640 Кбайт. Если Вы собира-
етесь использовать только некоторые модули пакета Object Professional,
то Вы можете обойтись и значительно меньшими ресурсами памяти. Если Вы
предполагаете  отлаживать  большие программы с использованием програм-
мы Turbo  Debugger, то рекомендуется также иметь память типа EMS объе-
мом 1-2 мегабайта.
     
     4. Два  дисковода  для  гибких  дисков.  Настоятельно рекомендуем
иметь жесткий диск. Установка всех файлов пакета  Object  Professional
(с расширениями ".TPU", ".OBJ", ".EXE", ".PAS", ".INC", ".ASM") требу-
ет  около  11 мегабайт свободной дисковой памяти. Для того, чтобы хра-
нить только файлы с расширением ".TPU", потребуется лишь немногим боль-
ше одного мегабайта памяти. (Прим. перев.: по-видимому,  ".TPU"  -  от
"Turbo Professional   Unit",   т.е.   "файл   модуля   системы   Turbo
Professional".) Если Вы приобрели настоящий пакет только для  управле-
ния  программами типа TSR (или, возможно, для использования некоторого
другого отдельного средства), то Вы можете работать  с  системой,  ис-
пользующей только гибкие диски.
     
     5. 80-колонный монитор.
     
     Необязательные требования:
     
     6. Turbo  Assembler  фирмы Borland (TASM) версии 1.0 или выше или

                             - 10 -
Macro Assembler фирмы Microsoft (MASM) версии 4.0 или выше. Эти средс-
тва потребуются только в том случае, если Вы пожелаете  модифицировать
какую-либо из подпрограмм, написанных на языке ассемблере.
     
     7. Манипулятор  типа  "мышь",  совместимый  с оборудованием фирмы
Microsoft. Все возможности пользовательского интерфейса пакета  Object
Professional поддерживают использование манипулятора типа "мышь".
             
     
     B. Поставляемые файлы
     
     Пакет Object Professional поставляется на восьми дискетах  разме-
ром 5,25" с объемом 360 К каждая или на четырех дискетах размером 3,5"
с  объемом  720 К. Одна дискета содержит программу INSTALL и несколько
демонстрационных программ. Три дискеты содержат исходные тексты библи-
отечных модулей и  демонстрационных  программ.  Две  дискеты  содержат
предварительно откомпилированные выполнимые файлы для демонстрационных
программ. Одна дискета содержит резидентно находящуюся в памяти  прог-
рамму  оперативной  информационой  помощи и файлы помощи. На последней
дискете, т.е. на диске "BONUS", содержатся различные свободно  распро-
страняемые модули и программы. (Прим. перев.: "bonus" - дополнительное
вознаграждение  из  чистой  прибыли  предприятия; здесь, по-видимому -
бесплатные дополнительные поставки программ.)
     
     Большинство файлов на дистрибутивных дискетах (прим. перев.: т.е.
на дискетах, поставляемых изготовителем) сжаты с помощью свободно рас-
пространяемой сервисной программы LHARC. Программа INSTALL будет авто-
матически расширять ("decompress") все файлы в то время, когда она бу-
дет  их  копировать.  Мы также предоставляем в Ваше распоряжение копию
сервисной программы LHARC, поэтому Вы сможете расширять файлы без  ис-
пользования программы INSTALL.
     
     На дистрибутивных дискетах Вы обнаружите следующие файлы:
     
     Диск INSTALL/DEMO
     _________________
     

                             - 11 -
     READ.ME
     Если Вы увидите  на  дискете файл с таким именем, то, пожалуйста,
прочтите его, прежде чем Вы продолжите работу. Он будет содержать  са-
мые последние дополнения и изменения к напечатанной информации.
     
     README.LZH
     Если Вам  встретится  такой файл, то он содержит сжатый текстовый
файл (READ.1ST), обеспечивающий дополнительную информацию, которую нам
не удалось поместить в файл READ.ME. Программа  INSTALL  автоматически
осуществит  его  расширение,  или Вы сможете сделать это вручную, если
скопируете этот файл на другой диск и введете затем команду:
                  LHARC X README
     
     FASTUPD.LZH
     Сжатый файл  (FAST.UPD), содержащий подробную информацию об изме-
нениях,  относящихся  конкретно  к   данной   версии   пакета   Object
Professional.  Подписчики пакета Fast Update Plan фирмы TurboPower об-
наружат, что этот файл представляет для них интерес, т.к. он описывает
исправления ошибок и усовершенствования, сделанные в  самой  последней
версии.
     
     INSTALL.EXE
     Программа установки и настройки пакета Object Professional версии
1.0.
     
     OPRO.MAK
     Этот файл необходимо использовать вместе с  сервисной  программой
MAKE  фирмы  Borland (поставляемой с пакетом Turbo Pascal). Он предос-
тавляет инструкции, подсказывающие программе MAKE, каким  образом  пе-
рестроить  все модули Object Professional и многие из демонстрационных
программ.
     
     LHARC.EXE
     Сервисная программа для расширения файлов, имена которых содержат
суффикс ".LZH". Вам потребуется эта программа, если  Вы  захотите  ис-
пользовать  метод  ручной  установки  системы и программной настройки,
описываемый ниже. Кроме того, на диске BONUS Вы найдете  сжатое  руко-

                             - 12 -
водство по работе с программой LHARC.
     
     DEMOSRC2.LZH
     Этот архив  содержит примерно для половины демонстрационных прог-
рамм исходные коды, написанные на Turbo Pascal и на языке  ассемблера,
а также объектные коды этих же программ.
     
     Диск SRC1:
     __________
     
     OPPAS1.LZH
     Этот архив содержит для половины библиотечных подпрограмм  исход-
ные коды, написанные на Turbo Pascal.
     
     Диск SRC2:
     __________
     
     OPPAS2.LZH
     Этот архив  содержит  исходные  коды, написанные на Turbo Pascal,
для второй половины библиотечных подпрограмм.
     
     Диск SRC3:
     __________
     
     OPASM.LZH
     Этот архив  содержит  исходные тексты для всех подпрограмм, напи-
санных на языке ассемблера.
     
     OPOBJ.LZH
     Этот архив содержит объектные файлы для всех  подпрограмм,  напи-
санных на языке ассемблера.
     
     DEMOSRC1.LZH
     Этот архив  содержит примерно для половины демонстрационных прог-
рамм исходные коды, написанные на Turbo Pascal и на языке  ассемблера,
а также объектные коды этих же программ.
     

                             - 13 -
     Диск EXE1:
     __________
     
     EXE1.LZH
     Этот архив  содержит  несколько выполнимых демонстрационных прог-
рамм.
     
     Диск EXE2:
     __________
     
     EXE2.LZH
     Этот архив  содержит  еще  несколько  выполнимых демонстрационных
программ.
     
     Диск HELP:
     __________
     
     POPHELP.LZH
     Этот архив  содержит  выполнимые  и исходные файлы для резидентно
находящейся  в  памяти  системы  оперативной   информационной   помощи
POPHELP. Он также содержит текстовые файлы помощи.
     
     Диск BONUS:
     __________
     
     EXAMPLES.LZH
     Этот архив  содержит исходные коды для предваряющих программ-при-
меров. Распечатка каждой программы, приведенная в соответствующем раз-
деле руководства, показывает имя относящегося к ней файла.
     
     LHDOC.LZH
     Этот архив содержит подробные инструкции по  использованию  прог-
раммы  LHARC.  Чтобы разархивировать его, скопируйте файл LHDOC.LZH на
другой диск и введите команду LHARC X LHDOC.
     
     READ.ME!
     Краткие описания других файлов с расширением ".LZH", имеющихся на

                             - 14 -
этом диске.
     
     *.LZH
     Различные программы  и  модули, для которых разрешается свободное
распространение. Некоторые из них были разработаны  фирмой  TurboPower
Software, другие были включены с разрешения автора.
     
     C. Установка системы и программная настройка
     
     В данной   главе  мы  покажем,  как  преобразовать  пакет  Object
Professional из его высокосжатой формы, в которой  он  представлен  на
дистрибутивных  дискетах, в удобные для использования файлы, размещен-
ные на Вашем рабочем диске. Как мы уже отмечали ранее, для использова-
ния  пакета Object Professional настоятельно рекомендуется иметь жест-
кий диск.  Данное руководство по установке системы и программной наст-
ройке ориентируется на те методы, которые применимы к жесткому  диску;
если  Вы  попытаетесь  использовать  систему на гибких дискетах, то Вы
должны обратиться к нам за получением консультации в том случае,  если
диалоговый режим не будет работать.
     
     Библиотечные модули для Object Professional поставляются только в
форме исходных текстов. Для того,  чтобы  использовать  какой-либо  из
этих модулей, Вы сначала должны их откомпилировать. Мы подготовили для
Вас два различных способа, позволяющих это сделать.
     
     Первый способ, более легкий в использовании, использует  диалого-
вую  программу  с  именем  INSTALL.EXE,  которую Вы найдете на дискете
INSTALL/DEMO. С  помощью  этой программы Вы можете выбрать любое коли-
чество модулей пакета Object Professional, и программа  INSTALL  будет
автоматически их копировать, разархивировать и компилировать, размещая
результирующие файлы по указанным Вами адресам. Программа INSTALL осо-
бенно полезна, если Вы имеете ограниченное дисковое пространство, если
Вы не хотите устанавливать все модули или если Вы недостаточно знакомы
с  файлом  типа  "make"  в стиле системы Unix. (Прим.перев.: В системе
Unix используется суперпрограмма "make" для создания, т.е. генерирова-
ния, файлов в зависимости от других файлов. Пользователь же может  за-
дать свои инструкции для программы "make" путем создания в своем теку-

                             - 15 -
щем  каталоге  файла с именем "makefile" и последующего вызова команды
"make". Файлы типа "makefile" служат также документами о взаимозависи-
мостях файлов. Далее в переводе этот файл  именуется  "файлом  генера-
ции".) Программа INSTALL пакета Object Professional также обладает за-
мечательным   новым   качеством   (по   сравнению   с   пакетом  Turbo
Professional): Вы можете скопировать архивные файлы в каталог на своем
жестком диске, и программа INSTALL будет получать доступ к этому ката-
логу, а не к файлам на гибких дискетах. Таким способом Вы сможете хра-
нить свои основные ("master")  дискеты,  позволить  программе  INSTALL
создавать  те файлы с расширением ".TPU", которые Вам необходимы, уда-
лять исходные файлы, которые Вы в настоящее время  не  используете,  и
повторно  запускать программу INSTALL для того, чтобы ввести несколько
исходных файлов или файлов с расширением ".TPU", когда эти  файлы  Вам
понадобятся.
                                             
     
     Второй метод, более мощный, но менее "дружественный"  (прим.  пе-
рев.:  т.е.  менее  удобный и легкий для пользователя), основан на ис-
пользовании сервисной программы MAKE.EXE фирмы Borland и  поставляемом
"файле  генерации"  ("make  file") с именем OPRO.MAK. "Файл генерации"
содержит  полный  набор   зависимостей   для   всех   модулей   Object
Professional  и многих демонстрационных программ. Этот способ является
до некоторой степени более быстрым, чем запуск программы INSTALL, если
Вам необходимо, чтобы все файлы системы Object Professional стали  для
Вас  немедленно  доступными. "Файл генерации" имеет может осуществлять
повторную компиляцию  файлов с расширением ".OBJ" в тех случаях, когда
исходные тексты программ с расширением  ".ASM"  претерпели  изменения.
(Обращаем  Ваше внимание на тот факт, что мы поставляем предварительно
откомпилированные файлы с расширением ".OBJ".) Для того, чтобы Вы мог-
ли воспользоваться методом, основанным на  применении  "файла  генера-
ции",  Вам необходимо иметь на своем диске по меньшей мере 11 мегабайт
свободного пространства.
     
     Независимо от выбранного Вами метода мы рекомендуем Вам использо-
вать  три  различных  подкаталога  для размещения файлов пакета Object
Professional:
     

                             - 16 -
     \OPRO     - для  исходных программ на языке Паскаль  и  файлов  с
                 расширением ".TPU"
     \OPROOBJ  - для исходных программ на языке ассемблера и объектных
                 файлов
     \OPRODEMO - для исходных  демонстрационных/сервисных  программ  и
                 выполнимых файлов
     
     Если все файлы будут находиться в одном и том же каталоге, то эф-
фективность работы системы DOS во время открывания файлов (при их ком-
пилировании) резко   уменьшается.   Как  при  использовании  программы
INSTALL, так и в случае применения  "файла  генерации"  обеспечивается
возможность присваивать вышеперечисленным трем каталогам тех имен, ко-
торые Вы сами для них выберете.
     
     Метод установки  системы и программной настройки с помощью "файла
     генерации"
     
     Для того,  чтобы  использовать  метод,  основанный  на применении
"файла генерации", Вам следует выбрать или создать подкаталоги  назна-
чения  так,  как это описано выше. Вам потребуется, чтобы эти каталоги
были включены в маршрутные имена используемых Вами  Turbo-компиляторов
для исходных  текстов программ, а также файлов с расширениями ".OBJ" и
".TPU". Кроме того, Вы, возможно, захотите  включить  этот  каталог  в
"путь доступа" системы DOS для того, чтобы выполнять  некоторые  авто-
номные  сервисные  программы, например, такие, как SMACS и MAKEMENU. С
другой стороны, как только Вы установите и  настроите  систему  Object
Professional, Вы можете переместить файлы с расширением ".EXE"  в  ка-
кой-либо другой каталог, имя которого уже было включено в "путь досту-
па" DOS.
     
     Помните, что для того, чтобы использовать метод установки системы
и программной настройки с помощью "файла генерации",  Вам  потребуется
не  меньше  11 мегабайт свободного дискового пространства. (Как только
установка системы и программная настройка будет завершена, Вы  сможете
удалить многие файлы, уменьшая тем самым потребности в пространстве до
объема, который  не намного превышает 1 мегабайт, если Вы будете "дер-
жать под рукой" только файлы с расширением ".TPU".) Если у Вас  недос-

                             - 17 -
таточно  дискового пространства, то переходите сразу к изучению описы-
ваемого ниже метода установки системы и программной  настройки  с  по-
мощью программы INSTALL.
     
     Чтобы продолжить установку системы и программную настройку с  по-
мощью  "файла  генерации",  скопируйте  все файлы и архивы с каждой из
дискет пакета Object Professional на собственный жесткий диск в  соот-
ветствующий каталог, как показано в нижеприведенной таблице:
     
     Дискета/файл               Каталог назначения
     ____________               __________________
     
     Диск INSTALL/DEMO
       READ.ME                  \OPRO
       README.LZH                -"-
       FASTUPD.LZH               -"-
       INSTALL.EXE               -"-
       OPRO.MAK                  -"-
       LHARC.EXE                 каталог сервисных программ  на  "пути
                                 доступа" системы DOS
       DEMOSRC2.LZH             \OPRODEMO
     Диск SRC1:
       OPPAS1.LZH               \OPRO
     Диск SRC2:
       OPPAS2.LZH               \OPRO
     Диск SRC3:
       OPASM.LZH                \OPROOBJ
       OPOBJ.LZH                -"-
       DEMOSRC1.LZH             \OPROOBJ
     Диск EXE1:
       EXE1.LZH                 \OPRODEMO
     Диск EXE2:
       EXE2.LZH                 \OPRODEMO
     Диск HELP:
       POPHELP.LZH              \OPRODEMO
     Диск BONUS:
       LHDOC.LZH                каталог сервисных программ  на  "пути

                             - 18 -
                                доступа" системы DOS
     (Прим. перев.: здесь не указан каталог для файла EXAMPLES.LZH.)
                     
     Как Вы  заметили, Вы должны скопировать файл LHARC.EXE (и относя-
щуюся к нему документацию) в каталог сервисных программ где-то в своем
"пути доступа" DOS PATH. Преимущества этого мы покажем ниже.
     
     Как только  Вы скопировали файлы в указанные каталоги назначения,
входите в каждый из каталогов, расширяйте файлы и удаляйте архивы:
     
     CD\OPRO
     LHARC X *.LZH
     DEL *.LZH
     
     CD\OPROOBJ
     LHARC X *.LZH
     DEL *.LZH
               
     CD\OPRODEMO
     LHARC X *.LZH
     DEL *.LZH
                   
     В действительности, если Вы не располагаете достаточным простран-
ством на диске, но у Вас нет ограничений во времени, то Вы можете рас-
ширять файлы непосредственно с основных дискет.  Например,  для  того,
чтобы расширить файл OPPAS1.LZH с дискеты SRC1, Вам следует установить
дискету  SRC1 на дисковод "A:", сделать текущим Ваш рабочий дисковод и
выполнить следующий действия с помощью строки подсказки системы ДОС:
     
     CD\OPRO
     LHARC X A:OPPAS1
         
     Файлы с расширением ".LZH" не содержат в себе никаких дублирующих
файлов. Если программа LHARC обнаружит, что она  собирается  перезапи-
сать  уже  существующий  файл (вследствие того, что Ваш каталог не был
пустым перед тем, как Вы начали с ним работать), она запросит подтвер-
ждения этому действию, прежде чем его выполнить. Если  это  требуется,

                             - 19 -
то нажмите клавишу <CtrlС> для того, чтобы прекратить выполнение прог-
раммы LHARC и возвратиться в строку подсказки ДОС.
     
     Прежде чем возобновить работу, Вам, возможно, потребуется модифи-
цировать программу OPROМАК для того, чтобы Вы могли работать со  своим
дисководом и каталогом начальной установки ("setup"). "Файл генерации"
определяет такую  информацию, как "путь доступа" к компилятору команд-
ной строки Turbo Pascal, а также позволяет установить, имеете  Вы  ас-
семблер  или нет. Возможно, Вам придется модифицировать следующие мак-
рорасширения и определения:
     
     asmdir         если Вы выбрали каталог, отличный от \OPROOBJ
     tpudir         если  Вы  хотите  поместить  файлы  с  расширением
                    ".TPU" в каталог,  отличный от \OPRO
     demodir        если Вы выбрали каталог, отличный от \OPRODEMO

     
     adir           то же, что и "asmdir", но заканчивающийся символом
                    обратной косой черты ("\")
     tdir           то же, что и "tpudir", но заканчивающийся символом
                    обратной косой черты
     ddir           то же, что и "demodir", но заканчивающийся  симво-
                    лом обратной косой черты
     
     HaveAssembler  если у Вас есть MASM или TASM,  и Вы хотите  иметь
                    возможность повторной компиляции с помощью ассемб-
                    лера
     MakeDemos      если  Вы хотите, чтобы  "файл генерации"  повторно
                    компилировал  демонстрационные программы, а  также
                    файлы  с расширениями ".TPU" и ".OBJ"
     tasm           если   у   Вас  есть   ассемблер,  (смотрите  выше
                    "HaveAssembler"), но вместо TASM имеетcя MASM
     
     assemble       указать "путь доступа" к ассемблеру
     compile        указать "путь доступа" к TPC.EXE и каким-либо спе-
                    циальным опциям компилятора
     

                             - 20 -
     "Файл генерации" содержит в себе подробные инструкции, просто ис-
пользуйте тот текстовый редактор, который Вы предпочитаете.  Если  Вас
не  устраивает перспектива внесения небольших редакционных изменений в
"файл генерации", то Вам следует использовать метод установки  системы
и программной настройки с помощью программы INSTALL.EXE.
     
     Затем откомпилируйте все  файлы,  используя  сервисную  программу
MAKE фирмы Borland :
     
     MAKE  -fOPRO.MAK
     
     Не пытайтесь воспользоваться программой MAKE фирмы Microsoft (или
какой-нибудь  другой сервисной программой MAKE) одновременно с постав-
ляемым "файлом генерации". Она  значительно  отличается  от  программы
фирмы Borland и поэтому просто не будет работать. Обратите внимание на
то,  что  опцию командной строки "-f" нужно вводить в нижнем регистре,
именно так, как показано.
     
     Путем установки соответствующих значений в файле  OPRO.MAK  прог-
рамма  MAKE  построит  всю  библиотеку без ошибок. Если Вы выявите ка-
кие-либо ошибки, то следует дважды проконтролировать "файл генерации".
Если и это не поможет, то проведите  поиск  файла  TPC.CFG.  (Описание
файла TPC.CFG приведено в руководстве для Turbo Pascal.) Если Вы  най-
дете  файл  TPC.CFG, то его необходимо удалить или временно переимено-
вать на период работы программы MAKE.
     
     Если Вы  захотите,  то  Вы  можете  теперь  построить для системы
Object Professional базу данных POPHELP (встроенную в память сервисную
программу подсказки). Для того, чтобы это сделать,  введите  следующие
команды:
                                                        
     CD\OPROOBJ
     MAKEHELP /Q OPRO
     
     Программа MAKEHELP считывает файлы OPRO.ТХ* и создает файл с име-
нем OPRO.HLP.
     

                             - 21 -
     Если Вы  имеете ограниченное пространство на диске, Вы можете те-
перь удалить несколько файлов (по крайней мере до тех пор, пока Вам не
понадобится в следующий раз модифицировать или перестраивать  один  из
наших модулей). Для того, чтобы удалить все файлы, за исключением фай-
лов с расширениями ".TPU" и ".EXE", введите следующие команды DOS:
     
     CD\OPRO
     DEL *.PAS
     DEL *.I*
     
     CD\OPROOBJ
     DEL *.ASM
     DEL *.OBJ
              
     CD\OPRODEMO
     DEL *.PAS
     DEL *.I*
     DEL *.ASM
     DEL *.OBJ
     DEL *.TPU
     DEL *.TX*  (только в том  случае, если Вы уже выполнили программу
                 MAKEHELP для того, чтобы создать OPRO.HLP)
                 
     После этого останутся только все необходимые файлы с расширениями
".TPU" и ".EXE" для демонстрационных и сервисных программ.
     
     Если Вы уже выполнили все это, воспользуйтесь возможностью распе-
чатать и прочитать файлы READ.ME, READ.1ST и FAST.UPD, которые  содер-
жат информацию, необходимую для обновления настоящего руководства.
     
     Метод  установки  системы  и  программной  настройки   с  помощью
     программы INSTALL
     
     Программа INSTALL представляет собой диалоговое средство, которое
мы написали для того, чтобы максимально облегчить для Вас процессы ра-
зархивирования, копирования и компиляции модулей Object  Professional.
С  ее  помощью  Вы  можете выбрать именно столько файлов пакета Object

                             - 22 -
Professional, сколько  Вам  действительно требуется. Программа INSTALL
даже устанавливает для Вас зависимости между модулями, поэтому Вы  по-
лучите  все  файлы, необходимые для того, чтобы откомпилировать данную
программу.
      
     Вы можете освободить дисковое пространство на то время,  пока  Вы
запускаете  программу INSTALL. Если у Вас найдется на диске еще допол-
нительное пространство  объемом  около  двух  мегабайт,  то  программа
INSTALL  будет работать значительно быстрее в том случае, если Вы сна-
чала скопируете все содержимое основных дискет в общий архивный  ката-
лог. В случае длительного прогона это позволит сэкономить Ваше  прост-
ранство, т.к. Вы сможете с помощью INSTALL удалить все, кроме файлов с
расширениями ".TPU" и ".EXE" и соответствующим образом повторно запус-
тить  программу  INSTALL  для  того, чтобы получить выбранные исходные
тексты программ в том случае и тогда, когда они Вам понадобятся. Чтобы
воспользоваться преимуществом этого способа, создайте у себя на  жест-
ком диске каталог (с произвольным именем) и скопируйте в него все фай-
лы с дискет пакета Object Professional.
     
     Если Вы  осуществляете  установку системы и программную настройку
непосредственно с гибких дискет, то вставьте диск INSTALL/DEMO в  дис-
ковод "A:" и введите команду:
     
     A:INSTALL
     
     Если Вы  используете способ, в котором применяется архивный ката-
лог, то осуществите запуск копии программы INSTALL, имеющейся  в  этом
каталоге.
     
     Когда эта  программа  начнет выполняться, то она будет "предпола-
гать", что процесс установки осуществляется с дисковода "A:" на  теку-
щий дисковод  и каталог. Она также будет искать "путь доступа" системы
DOS для того, чтобы обратиться к Вашей копии программы TPC.EXE,  кото-
рую  она  будет  использовать  для  того, чтобы откомпилировать модули
Object Professional.
     
     Когда появится основное окно программы INSTALL, то Вы увидите  на

                             - 23 -
экране изображение, подобное приведенному ниже:
     
 __________Object Professional 1.0 Installation Program______________
│                                                                    │
│Archive directory     :___________________  Disk free __________    │
│PAS/TPU destination   :___________________  Disk required_______    │
│ASM/OBJ destination   :___________________                          │
│DEMO/UTIL destination :___________________                          │
│Compiler pathname     :___________________                          │
│                                                                    │
│       Select                      Go               Quit            │
│                                                                    │
│Autoselect dependencies:Y     Compile source:Y    Overwrite files:Y │
│       Assembler source:N  Conditional Defines  Confirm overwrite:Y │
│      Use swapping EXEC:N      Delete source:Y                      │
│____________Help appears on this line, for each topic_______________│
                                                                                                                                                                                                                                                               
  Справочник-словарь выражений, используемых в окне программы INSTALL
                 (в алфавитном порядке)

Archive directory - архивный каталог
Assembler source: N - исходный текст на ассемблере: Нет
ASM/OBJ destination - каталог для файлов с расширением ".ASM" и ".OBJ"
Autoselect dependencies: Y - выбрать зависимости автоматически: Да
Сompile source: Y - откомпилировать исходный текст: Да
Compiler pathname - "имя пути" для компилятора
Conditional Defines - условные определения
Confirm overwrite: Y - подтверждаете перезапись:Да
Delete source: Y  - удалить исходный текст:Да
DEMO/UTIL destination  -  каталог  для  файлов с расширением ".DEMO" и
                         ".UTIL"
Disk free - свободное пространство на диске
Disk required - требуемое пространство на диске
Go - выполнить
Help appears on this line, for each topic - помощь появляется на  этой
                                            строке для каждого темати-
                                            ческого  вопроса

                             - 24 -
Object Professional 1.0 Installation Program - программа  установки  и
                                               настройки системы Object
                                               Professional версии 1.0
Overwrite files: Y - перезаписать файлы: Да
PAS/TPU destination - каталог для файлов с расширением ".PAS" и ".TPU"
Quit - выйти
Select - выбрать
Use swapping EXEC: N - использовать подкачку при выполнении: Нет
     
     Первые четыре  строки показывают каталоги, имена которых принима-
ются по умолчанию. "Archive directory" ("Архивный каталог") предназначен
для размещения сжатых LZH-файлов. Обычно в качестве архивного каталога
будет использоваться либо "A:\", либо  специальный  архивный  каталог,
который Вы  создали  и  в  который загрузили содержимое дистрибутивных
дискет. Следующие три строки указывают имена каталогов назначения  для
расширенных файлов.   Пятая  строка  определяет  размещение  программы
TPC.EXE, компилятора  командной  строки  системы  Turbo  Pascal  фирмы
BORLAND.
                                                                                                                                                                                                                                                               
     Если Вы   хотите   изменить  назначения,  принимаемые  программой
INSTALL по умолчанию, или если программа INSTALL не смогла найти прог-
рамму TPC.EXE, то используйте клавиши управления курсором с тем, чтобы
поместить линейку выделения (высвечивания) на тот каталог, который не-
обходимо заменить, нажмите на клавишу <Enter>, чтобы этот каталог выб-
рать, наберите на клавиатуре желаемую строку символов и нажмите клави-
шу <Enter> еще раз, чтобы ввести это изменение. Вы можете также нажать
клавишу <Esc> для того, чтобы отменить какие-либо  изменения,  которые
Вы производили во время редактирования текста.
     
      Для архивного каталога и каталогов назначения  требуется  указы-
вать дисковод  и  имя  каталога. Архивный каталог (но только он) может
содержать список альтернативных каталогов, в котором  имена  каталогов
отделены  символом "точка с запятой" (;) (аналогично тому, как это за-
писывается в команде DOS PATH). Если Вы изменяете  каталог  назначения
"PAS/TPU destination" ("Каталог для  файлов  с  расширением  ".PAS"  и
".TPU"),  то программа INSTALL автоматически изменит имя каталога наз-
начения для файлов с расширением ".ASM" и ".OBJ", а также имя каталога

                             - 25 -
для файлов с расширением ".DEMO" и ".UTIL", приводя их в  соответствие
с  именем каталога для файлов с расширением ".PAS" и ".TPU" и добавляя
к этим именам расширения ".OBJ" и ".DEMO"  (соответственно).  Обратите
внимание  на то, что программа INSTALL будет создавать каталоги назна-
чения с указанными именами, если они еще не существуют.
     
     "Имя пути" для компилятора может состоять либо из имени дисковода
и имени  каталога, либо из полного "пути доступа" и имени файла (в том
случае, если Вы изменили имя своей программы TPC.EXE). Этот  указанный
компилятор  ДОЛЖЕН  быть компилятором версии 5.5, в противном случае в
процессе компиляции Вы получите ошибки.
     
     Если Вы  устанавливаете  систему  на двух гибких дискетах, то Вы,
возможно, пожелаете для всех каталогов назначения ввести имя дисковода
"B:\", а для каталога TPC.EXE - имя "A:\" . В этом  случае  Вы  будете
подкачивать  дистрибутивные дискеты пакета Object Professional на дис-
ковод "A:"  и  устанавливать другие дискеты в дисковод "B:". Когда по-
дойдет время компилирования, программа INSTALL  "подскажет"  Вам,  что
нужно  установить  на  дисководе  "A:"  дискету,  содержащую программы
TPC.EXE и TURBO.TPL. Если в Вашем  распоряжении  имеется  ограниченное
пространство  оперативной памяти, Вам может также потребоваться диске-
та, содержащая программу COMMAND.COM; в этом случае система DOS должна
перезагрузить этот файл после компиляции.
     
     В верхнем правом углу окна указывается объем дискового пространс-
тва. "Disk free" ("Свободное пространство на диске") представляет  со-
бой приблизительное число свободных в текущий момент байт на дисководе
назначения для файлов с расширением ".PAS" и ".TPU" файлов. Это  число
может изменяться, когда программа INSTALL копирует и компилирует файлы
на этом дисководе. "Disk required" ("Требуемое пространство на диске")
показывает  минимальное  число байт, необходимых для того, чтобы запи-
сать выбранные в данный момент файлы  пакета  Object  Professional  на
диск  назначения.  Безусловно,  Вы захотите быть уверенными в том, что
свободное пространство превышает  требуемый  объем  памяти.  Программа
INSTALL не обеспечивает соответствующую проверку, предоставляя Вам вы-
бирать  ту  группу  файлов, которая будет соответствовать имеющемуся в
Вашем распоряжении пространству. Отметим, что подсчет требуемого прос-

                             - 26 -
транства, осуществляемый программой INSTALL, не является точным,  хотя
дает достаточно близкую оценку.
                                            
     Центральный ряд, который выделен на Вашем экране  другим  цветом,
показывает  "кнопки  действия" для управления программой INSTALL. Если
Вы помещаете линейку выделения на какой-либо из указанных элементов  и
нажимаете на клавишу <Enter>, то программа INSTALL предпринимает даль-
ше указанное действие.
     
     Действие "Select"  ("Выбрать") заставляет программу INSTALL отоб-
разить на экране второе окно, "File Selection  Window"  ("Окно  выбора
файлов"). В  этом  окне  Вы  имеете  возможность выбрать модули Object
Professional и демонстрационные программы, которые Вы хотели бы  уста-
новить.  С помощью клавиш управления курсором Вы можете установить по-
ложение линейки  выделения, с помощью клавиши <Ins> - выбирать опреде-
ленный модуль, с помощью клавиши <Del> - отказаться от выбора  модуля,
с  помощью  клавиши  <Enter>  - переключить режим выбора или с помощью
клавиш <CtrlEnter> - отменить все текущие выбранные значения.  Выбран-
ные  значения отмечаются на экране с помощью символа стрелки, располо-
женного слева. Вы увидите, что после каждого  сделанного  Вами  выбора
показания  в  позиции "Disk required" ("Требуемое пространство на дис-
ке") будут изменяться.
     
     Когда Вы  выбрали какой-либо определенный модуль или демонстраци-
онную программу, программа INSTALL осуществляет  действительный  отбор
всей  группы файлов, которые необходимы для того, чтобы скомпилировать
этот модуль (файлы,написанные на языке Pascal, включаемые файлы, файлы
с   расширением   ".OBJ" и  т.д.).  Если  включена  опция  "Autoselect
dependencies" ("Выбрать зависимости автоматически"), расположенная еще
ниже в первом окне, то программа INSTALL выбирает любые модули, от ко-
торых  зависит  текущая программа или модуль. В действительности очень
интересно посмотреть,  какие модули инициируются каждой программой. Вы
имеете возможность  поэкспериментировать,  поочередно выбирая модули и
нажимая на клавиши <CtrlEnter>. Однако обратите внимание, что  автома-
тический  выбор зависимых модулей работает только в одном направлении.
Когда Вы аннулируете выбор данного модуля, то это не отменяет уже осу-
ществленного подбора тех модулей, от которых он зависит.

                             - 27 -
                    
     Когда результаты работы программы INSTALL записываются на  гибкий
диск,  то  все  результаты  отбора для каждого набора выбранных файлов
должны быть  помещены  на  один и тот же диск. Это требование серьезно
ограничивает возможности программы INSTALL работать с системой, в  ко-
торой используются только гибкие дискеты.
     
     Сейчас очень подходящий момент еще раз повторить, что  Вы  всегда
должны  выбирать  для копирования файл READ.ME. Этот файл содержит ин-
формацию, которая не могла быть внесена в отпечатанное руководство и в
действительности она очень часто бывает существенной.  Мы  даже  не  в
состоянии точно  сказать,  как много пользователей, оказавшихся в зат-
руднении, потратило  деньги  на  междугородные  телефонные  переговоры
только для того, чтобы узнать, что ответы на все их вопросы уже содер-
жались в файле READ.ME.
     
     Как только  Вы отобрали необходимый для Вас набор файлов, нажмите
на клавишу <Esc>, при этом окно  "Selection  window"  ("Окно  выбора")
закроется,  и  Вы возвратитесь в окно "Command window" ("Окно команд")
программы INSTALL.
     
     Две другие кнопки действия, "Go" ("Выполнить")  и  "Quit"  ("Вый-
ти"),  обеспечивают  выполнение  названных действий. При выборе кнопки
"Go" начинается процесс разархивирования, копирования  и  компилирова-
ния. Выбор кнопки "Quit" возвращает Вас в подсказку системы DOS. Преж-
де чем Вы действительно осуществите действие "Go", прочитайте приводи-
мые ниже описания остальных опций программы INSTALL.
     
     Три нижних  ряда  в "Command window" ("Окне команд") представляют
опции, управляющие поведением  программы  INSTALL.  Поместите  линейку
выделения на любой из элементов "Y/N" ("Да/Нет") и нажмите на  клавишу
<Enter>, если хотите переключить установленное значение на обратное.
     
     Мы уже  упоминали опцию "Autoselect dependencies" ("Выбрать зави-
симости автоматически"). Когда для нее установлено  значение  "Y",  то
окно "Selection window" ("Окно выбора") автоматически активизирует все
те модули, от которых зависит выбранный модуль. Вследствие  того,  что

                             - 28 -
пакет  Object  Professional имеет очень много файлов, Вы можете наблю-
дать значительную паузу в том случае, когда эта опция задействована  и
Вы выбираете большое число файлов.

     Когда для  опции "Assembler source" ("Исходный текст на ассембле-
ре") установлено значение "Y", то программа  INSTALL  разархивирует  и
копирует  в каталог назначения исходные файлы, написанные на языке ас-
семблера. В противном случае она копирует только предварительно отком-
пилированные с  помощью  ассемблера файлы с расширением ".OBJ". Вам не
потребуются исходные файлы, написанные на ассемблере, если Вы не соби-
раетесь их изучать или модифицировать.
     
     Когда для  опции  "Use  swapping  EXEC"  "("Использовать подкачку
EXEC") установлено значение "Y", то программа INSTALL перед  тем,  как
вызывать компилятор, подкачивает большую часть своего текста в  память
типа EMS или на диск. Это предоставляет для компилятора больше рабочей
памяти.  Не  выбирайте эту опцию, если осуществляете работу с системой
на гибких дискетах, которая не имеет по меньшей мере 150  К  свободной
памяти типа EMS.
     
     Когда  для  опции  "Compile  source"  ("Откомпилировать  исходный
текст") установлено значение "Y", то программа INSTALL запускает  ком-
пилятор  Turbo Pascal (TPC.EXE) для того, чтобы осуществить компиляцию
каждого модуля и программы, которые Вы отобрали, создавая таким  обра-
зом  файлы  с расширениями ".TPU" и ".EXE" для дальнейшего использова-
ния.
     
     Опция "Conditional Defines" ("Условные определения") предоставля-
ет список условно определенных символов. Используйте клавиши  управле-
ния курсором для того, чтобы выбрать (или отказаться от выбора) нужных
Вам  опций. Файл OPDEFINE.INC будет обновляться (во время компилирова-
ния) с учетом вносимых Вами изменений. Для получения  более  подробной
информации о каждом определении обратитесь к следующей главе "Принципы
организации". Заметим, что отдельные демонстрационные программы пакета
Object Professional (но не модули) требуют конкретных определений. Для
сервисных программ, которые могут вызвать наибольшие  затруднения,  мы
предоставляем откомпилированные  файлы  с  расширением ".EXE", поэтому

                             - 29 -
эта проблема не окажет на  Вашу  работу  сколько-нибудь  значительного
влияния.  Однако  если Вы отменили требуемое определение, то TPC будет
генерировать ошибку  во  время  компиляции  демонстрационных программ.
(Прим. перев.:  по-видимому, "TPC" - от "Turbo Pascal Compiler",  т.е.
"компилятор Turbo  Pascal".) Вы можете продолжать компилировать другие
программы простым нажатием на клавишу  <Enter>,  чтобы  очистить  окно
ошибок программы INSTALL.
     
     Установите для  опции  "Delete source" ("Удалить исходный текст")
значение "Y", если Вы не хотите оставлять на своем диске исходные тек-
сты программ. Программа INSTALL будет в этом случае удалять все файлы,
имеющие расширения ".PAS", ".OBJ" и ".ASM", а также включаемые файлы, ос-
тавляя только файлы с расширением ".TPU" и выполнимые  демонстрационные
программы.
     
     Когда для опции "Overwrite files" ("Перезаписать файлы") установ-
лено значение  "Y",  то  программа  INSTALL будет перезаписывать любой
файл с тем же самым именем в каталог назначения, требуя  Вашего  подт-
верждения,  если  для  опции "Confirm overwrite" ("Подтвердить переза-
пись")  тоже  установлено  значение  "Y".   Устанавливая   для   опции
"Overwrite files" ("Перезаписать файлы") значение "N", Вы можете легко
пополнить свой  каталог  для  пакета  Object Professional недостающими
файлами с  дистрибутивных  дискет, не тратя времени на перезапись фай-
лов, которые в нем уже имеются.
     
     После того, как Вы установили значения для каждой опции по своему
желанию и выбрали те файлы, которые Вам требуются, Вы готовы к осущес-
твлению операции "Go". Программа INSTALL попросит Вас установить соот-
ветствующие  дискеты  пакета Object Professional. Вы будете иметь воз-
можность следить за ходом процесса  установки  системы  и  программной
настройки в окне DOS в нижней части экрана. Если произойдет какое-либо
нарушение процесса, то программа INSTALL задаст Вам вопрос, желаете ли
Вы  продолжить работу или прекратить текущую серию операций. (Вниманию
пользователей, имеющих дискеты диаметром 3,5": если INSTALL определит,
что метка дискеты не соответствует ожидаемой, она выдаст предупреждаю-
щее сообщение. В этом случае нужно просто нажать на  клавишу  <Enter>,
если  Вы хотите продолжить работу.) Если программа INSTALL завершается

                             - 30 -
успешно, нажмите на клавишу <Esc> для того, чтобы очистить сообщение о
статусе выполнения работы, и затем выберите опцию "Quit",  чтобы  вер-
нуться в DOS, или перейдите к отбору другой группы файлов.
     
     D. Структура руководства
     
     Организация размещения информации имеет решающее значение для та-
кой  библиотеки,  как  библиотека  томов,  составляющих руководство по
Object Professional.  Мы не можем ожидать, что каждый прочтет и запом-
нит 1600 страниц документации - хотя мы все же на это надеемся! - поэ-
тому видим свою задачу в том, чтобы максимально облегчить  пользовате-
лям  работу с этой документацией как сейчас, так и в будущем. Мы попы-
тались предоставить Вам все необходимое для того, чтобы Вы могли быст-
ро найти ответы на все свои вопросы. В настоящем разделе будет  описа-
но, как можно наиболее эффективно использовать эти руководства.
     
     Как Вам известно, руководство разделено на три тома. Первоначаль-
но  это было обусловлено вопросами технологии (т.к. книги на пружинках
не могут иметь чересчур большую толщину), но такое  деление  на  книги
должно также  помочь  Вам  быстрее  находить  нужную информацию. Стиль
оформления переплетов отдельных томов пособия  был  выбран  специально
таким, чтобы  Вы  могли сразу без ошибки взять с полки именно тот том,
который требуется. В каждом томе содержатся документы,  которые  логи-
чески можно объединить по тематическому принципу:
     
     Том 1: Управление экраном
     Том 2: Ввод/вывод данных
     Том 3: Программы типа TSR и другие сведения
     
     Имеющиеся ограничения на число страниц в отдельном томе заставила
нас  пойти  на некоторые компромиссы в размещении модулей по отдельным
томам. В частности, описание  модуля  OPHELP  и  обсуждение  программы
MAKEMENU были перенесены из тома 1, которому они наиболее соответству-
ют, в том 2. Аналогично обсуждение объектов данных - OPROOT и OPLARRAY
-  было перенесено из тома 2 в том 3, который представляет собой в не-
котором роде "сборную солянку", содержащую материалы по разным темати-
ческим вопросам.

                             - 31 -
     
     Каждая книга начинается с полного оглавления и заканчивается пол-
ным тематическим индексом. Те, кто привык работать с  подобными  руко-
водствами,  сочтут,  возможно, что оглавление представляет собой самое
лучшее средство для быстрого отыскания конкретной подпрограммы: мы пы-
таемся ограничить в оглавлении степень дробления, так чтобы  Вы  могли
просмотреть его как можно быстрее.
     
     Последний том  заканчивается  указателем  вида   "процедура/функ-
ция/метод". Этот  указатель в основном представляет собой список снаб-
женных документацией отдельных частей разделов взаимодействия всех мо-
дулей Object Professional, в порядке их объявления, причем этот список
снабжен сведениями о номере тома, главы и страницы для каждой подпрог-
раммы. Если Вы можете вспомнить, что Вам необходима подпрограмма,  от-
носящаяся  к  конкретному объекту или модулю, но не помните ее имя или
параметры, то для Вас этот указатель окажется бесценным.
     
     Материал распределен  по  главам по тематическому принципу. Далее
главы подразделяются на разделы, каждый из которых описывает отдельный
модуль. Раздел обычно организован приблизительно следующим образом:
     
4. Оконные объекты                              (Тематическая глава)
  E. OPDIR - списки каталогов                   (Раздел,   описывающий
     и маршрутов                                 модуль)
    Обзор модуля
    1. DirList: Выбор имени файла               (Подраздел,  описываю-
     Введение в объект                           щий объект)
     Предваряющая программа-пример
     Специальные тематические вопросы
     Объявления данных
       Константы
       Типы
       Переменные
     Методы
    2. PathList: Выбор "пути доступа"
      ...
    3. Процедуры и функции

                             - 32 -
      ...
     
     В разделе "Типы" Вы часто сможете видеть приблизительно такую за-
пись:
     
     RawWindow =
       object(AbstractWindow)
         ...
         wFrame        : Frame;
         aFrame        : Frame;
         ...
       end;
                      
     Знак многоточия ("...") указывает на то, что объект объявляет од-
но  или несколько полей данных, которые не описаны документально в ру-
ководстве. Если знаки многоточия отсутствуют, то объект либо не  имеет
никаких  полей  данных,  либо имеет только те, которые унаследованы от
его родителя.
     
     Чтобы облегчить поиск раздела, относящегося к  обсуждению  данной
процедуры  или метода, в верхней части страницы приводятся имена  под-
программ(ы),  описываемых(ой) на данной странице,  причем они отделены
от всего остального текста сплошной линией. Нижняя часть страницы  по-
казывает имя того модуля, который описывается в данном  разделе, а та-
кже имя объекта (если таковой имеется). Например, при описании  метода
CommandWindow.Process ("Окно_команд.Обработка")  в верхней части стра-
ницы у  ее внешнего края будет помещено название метода "Process", на-
печатанное жирным шрифтом . Нижняя часть страницы  у  внешнего  своего
края  будет  содержать  имя  модуля ("OPWINDOW") и номер страницы, а у
внутреннего края - имя объекта ("CommandWindow").
     
     Некоторые разделы начинаются со схемы, показывающей иерархию объ-
ектов, которые должны быть описаны:
     
     [CommandWindow]
       [AbstractSelector]
         [Selector]

                             - 33 -
           [ScrollingSelector]
         EntryScreen
           ScrollingEntryScreen
     
     Имена, заключенные в скобки, показывают, для  каких  членов  этой
иерархии  документальные описания приводятся где-то в другом месте ру-
ководства.
     
     Если у  Вас  имеется достаточно времени, чтобы прочесть предвари-
тельно всю  документацию полностью, мы рекомендуем Вам прочитать обзор
модуля, введение в объект, предваряющую программу-пример и специальные
тематики для каждого раздела. Мы приложили много усилий для того, что-
бы подготовить полные программы-примеры для каждого объекта или  моду-
ля, так как знаем, что большинство людей лучше всего обучаются  с  по-
мощью примеров. Эти предваряющие программы увязывают все в одно целое;
разделы  "Описания"  ("Declarations") и "Методы" ("Methods") завершают
пояснения с помощью подробных ссылок.
     
     Каждая предваряющая программа-пример также предоставляется в виде
исходного текста  на  диске, поэтому Вам не придется ее распечатывать.
Имя исходного файла приведено в комментариях, имеющихся справа от име-
ни программы.
     
     Вы заметите, что не ориентированные на объекты процедуры и  функ-
ции  записаны отдельно от методов. Большинство модулей нелегко отнести
к тому или другому разделу целиком, поэтому такое разделение не  явля-
ется чем-то особенно важным, однако его неплохо все же иметь в виду.
     
     Каждая глава  заканчивается разделом, который описывает сервисные
программы и программы-примеры, построенные с  использованием  подпрог-
рамм,  которые  только  что  были описаны. Некоторые из этих программ,
особенно MAKEMENU и MAKESCREEN, очень важно прочитать, так как они бу-
дут использоваться  при генерации многих Ваших исходных текстов по Ва-
шему желанию. Все программы-примеры содержат полезные  уроки,  которые
необходимо усвоить, поэтому не пропускайте их при чтении.
     
     Методы, процедуры и функции документально описываются на одной  и

                             - 34 -
той  же  странице  всегда,  когда это возможно. Вследствие ограничения
места и стоимости мы были вынуждены размещать на одной и той же  стра-
нице более одной подпрограммы в тех случаях, когда  они  умещались.  И
даже в этих случаях в верхней части страницы печатаются жирным шрифтом
имена  всех подпрограмм, которые здесь описаны. Т.к. подпрограммы раз-
мещены в тексте в алфавитном порядке, Вы имеете  возможность  перелис-
тать  пособие  для  того,  чтобы достаточно быстро отыскать конкретную
подпрограмму. Имя модуля и, если он имеется, имя объекта приведены  на
последней строке каждой странице, так что Вы  тоже  можете  их  быстро
просмотреть, чтобы найти то, что Вам требуется.
     
     При описании каждой подпрограммы приводятся следующие подразделы:
     
     Объявление
     Объявление процедуры  языка  Pascal, представляющее полный список
параметров
     
     Назначение
     Описание назначения процедуры, представленное в виде одного пред-
ложения

     Описание
     Более подробные сведения о параметрах, действии, побочных  эффек-
тах и условиях возникновения возможных ошибок для данной  попрограммы
     
     Примеры
     Фрагменты исходных текстов программ или короткие программы, пока-
зывающие, как использовать подпрограмму, и снабженные комментариями
       
     Смотрите также
     Родственные подпрограммы. Если родственная подпрограмма содержит-
ся  в  том же самом объекте или модуле, то в списке указывается только
ее имя. Если это метод, относящийся к  другому  объекту,  то  название
подпрограммы  приводится  в  виде  "ИмяОбъекта.ИмяМетода". Если данная
подпрограмма представляет собой не объектно-ориентрированную  подпрог-
рамму  из  другого  модуля,  ее  имя приводится в виде "ИмяПодпрограм-
мы(ИМЯМОДУЛЯ)".

                             - 35 -
     
     Не забудьте посмотреть Приложения. Они включают  некоторые  очень
полезные таблицы  - таблицы зависимостей между модулями, иерархии объ-
ектов, кодов ошибок коды, перекрывающихся модулей - а также советы  по
конвертированию  прикладных программ Turbo Professional в соответствии
с требованиями пакета Object Professional и по компилированию  больших
программ с помощью Turbo Pascal.
     
     Кроме того, не забудьте, пожалуйста, прочитать файл READ.ME. Было
бы  хорошо,  если  бы Вы его распечатали, с тем чтобы спустя несколько
месяцев Вы смогли вдруг заметить, что он отклеился от  обложки  Вашего
руководства, и вспомнили, что было бы неплохо взглянуть на него снова.
Файл READ.ME отвечает на общие вопросы, описывает новые свойства прог-
раммного  обеспечения, исправляет обнаруженные в тексте пособия ошибки
- одним словом, представляет собой очень полезную вещь, которую  нужно
знать.
     
     И, наконец, мы предоставляем машиночитаемый комплект документации
и  мощную сервисную программу для получения доступа к нему. Почаще чи-
тайте описание программы POPHELP, что будет самым лучшим способом сбе-
речь Ваш комплект пособия по Object Professional от того, чтобы не за-
читать его до дыр.
  
     E. Получение помощи при использовании программы POPHELP
     
     Программа POPHELP представляет собой находящуюся резидентно в па-
мяти программу, которая предназначена, главным образом, для предостав-
ления пользователю  легкодоступной оперативной информационной помощи в
диалоговом режиме  для библиотеки пакета Object Professional. Вследст-
вие того, что она  базируется  на  использовании  возможностей  модуля
OPSWAP для  подкачки  усовершенствованных программ типа TSR, она может
занимать в памяти DOS всего около 6 К.  Программа  POPHELP  использует
файлы  оперативной  информационной  помощи,  сгенерированные сервисной
программой MAKEHELP пакета Object Professional, поэтому Вы можете так-
же объединить файлы помощи из различных систем  фирмы  TurboPower  или
расширить помощь в собственных системах.
     

                             - 36 -
     Программа POPHELP является новой версией программы GUIDE, которую
мы  поставляли  с  последней  версией пакета Turbo Professional. Файлы
оперативной  информационной  помощи,   которые   считывает   программа
POPHELP, не совместимы с соответствующими файлами пакета GUIDE. Тем не
менее Вы  имеете  возможность перекомпилировать старые текстовые файлы
помощи, используя сервисную программу MAKEHELP, поставляемую с пакетом
Object Professional, и  обновить  их  в  соответствии  со  стандартами
POPHELP.
     
     Установка и программная настройка POPHELP
     
      Программа POPHELP может быть установлена и настроена несколькими
способами:
     
     - как  обычная  программа типа TSR, использующая 150-200 К опера-
тивной памяти;
     - как программа типа TSR,  которая  подкачивается  к  расширенной
(expanded) памяти типа EMS, оставляя только 8 К своей основной части в
оперативной памяти;
     - как программа типа TSR, которая подкачивается на диск, оставляя
только 8 К своей основной части в оперативной памяти;
     - как оболочка, которая выполняет другую программу и затем  авто-
матически выгружает себя  из памяти.
     
     Вы осуществляете  выбор одной из этих возможностей, используя па-
раметры командной строки программы POPHELP.
     
     (Возможно, Вам будет интересно узнать о расхождении  в  значениях
использумых объемов оперативной памяти в 6 К и 8 К. Лишние 2 К исполь-
зуются  средством подсоединения блоков программы POPHELP, которое поз-
воляет Вам вносить порции текста оперативной информационной  помощи  в
свой редактор. Если Вы предпочитаете уменьшить используемый объем опе-
ративной  памяти до 6 К, Вы можете изменить условное определение прог-
раммы POPHELP и  перекомпилировать  ее.  Технология  этого  описана  в
POPHELP.PAS.)
     
     Настоящая версия программы POPHELP  снабжена  файлом  оперативной

                             - 37 -
информационной  помощи для пакета Object Professional версии 1.0. Этот
файл помощи содержит информацию обо всех  взаимодействующих  объектах,
методах, константах, типах, переменных, процедурах и функциях в библи-
отеке.  Кроме того, он предоставляет полезные таблицы о кодах сканиро-
вания и графических символах для изображения линий. Файл  помощи  пре-
доставляется  в исходном формате, так что Вы имеете возможность допол-
нять его так, как Вы считаете нужным.  Компилирование  этой  программы
представляет собой простую одношаговую операцию.
     
     Если Вы выбрали программу POPHELP с помощью программы INSTALL, то
она помещает в каталог \OPRODEMO следующие файлы:
                  
     POPHELP.EXE
     POPHELP.PAS
     PHMAIN.PAS
     PHTIMER.ASM
     PHTIMER.TPU
     OPRO.TXT
     OPRO.T*       (включаемые файлы текста помощи)
     OPRO.HLP
     MAKEHELP.EXE
     
     Если Вы не запускали программу INSTALL, Вам необходимо произвести
компиляцию текста помощи для того, чтобы создать файл OPRO.HLP. Выпол-
ните эту операцию путем набора следующей команды:
     
     MAKEHELP /Q OPRO
     
     Как только Вы создали файл OPRO.HLP, Вы можете удалить со  своего
диска  все файлы с именем OPRO.T*. Если Вас не интересует изучение или
модифицирование программы POPHELP, то Вы можете также удалить со свое-
го диска и исходные файлы. В результате этого у Вас  останутся  только
два файла для программы POPHELP, требующих времени для выполнения:
     
     POPHELP.EXE    - средство создания ссылок всплывающих меню
     OPRO.HLP       - файл  оперативной  информационной  помощи
                      пакета Object Professional

                             - 38 -
     
     Эти два файла требуют для своего размещения около 400 К дискового
пространства.
     
     По умолчанию   программа   POPHELP   инициирует   загрузку  файла
OPRO.HLP. Поэтому в самом простом случае Вы можете разместить програм-
му POPHELP в резидентной памяти путем ввода набора символов
     
     POPHELP
                  
в командную строку системы DOS в тот момент, когда файл OPRO.HLP будет
находиться в текущем каталоге.  Это  приведет  к  установке  программы
POPHELP в режиме подкачивания; она будет использовать для подкачивания
память  типа  EMS  (около 180 К) или пространство на диске (два файла,
каждый примерно по 180 К) и займет около 8К оперативной  памяти  Вашей
системы DOS.
     
     Программа POPHELP  предоставляет ряд возможностей для осуществле-
ния контроля за состоянием своей  резидентной  части.  Она  использует
следующий синтаксис командной строки DOS:
     
     POPHELP [Файл_помощи] [Параметры]
     
     Необязательный аргумент "Файл_помощи" представляет собой "имя до-
ступа" для файла помощи. Программа POPHELP будет автоматически загру-
жать файл OPRO.HLP, производя поиск его в текущем каталоге, в каталоге
программы POPHELP.EXE (если Вы используете версию 3.0  DOS  или  более
позднюю) и  в "пути доступа" системы DOS (DOS PATH). При использовании
какого-либо другого каталога или другого файла помощи  его  необходимо
указать,  введя  в  командную  строку  POPHELP. По умолчанию программа
POPHELP дополняет к указанному Вами имени файла расширение ".HLP".
     
     В командной строке могут быть использованы следующие необязатель-
ные параметры:
     
     /B        Обеспечить использование  черных и белых атрибутов ото-
               бражения

                             - 39 -
     /D        Обеспечить подкачку на диск даже тогда, когда  доступна
               память типа EMS
     /E ProgToExec CommandLine
               Выполнить программу вместо того, чтобы вводить  ее  как
               резидентную. Нет никакой подкачки. Этот параметр должен
               быть последним в командной строке.
     /H Height Указать начальное значение высоты окна помощи,  отлича-
               ющееся от высоты в 12 рядов.
     /I HotKey Указать альтернативный "горячий ключ" для индекса помо-
               щи.
     /L HotKey Указать альтернативный "горячий ключ" для просмотра эк-
               рана.
     /M        Отменить вывод сообщений  в то время,  когда  программа
               типа TSR подкачивается на диск или с диска.
     /N        Обеспечить загрузку в память полной программы типа  TSR
               (без подкачивания).
     /P.HotKey Указать альтернативный "горячий ключ" для  предшествую-
               щей тематики.
     /S.Path   Указать дисковод и каталог для дисковой подкачки.
     /U        Выгрузить программу типа TSR из памяти.
     /?        Вывести  экран оперативной информационной помощи.
                               
     Примеры:
     
     POPHELP C:\OPRODEMO\OPRO
     
     Загрузить OPRO.HLP из указанного каталога.
     
     POPHELP MYHELP /H 15
     
     Загрузить программу  MYHELP, используя окно помощи по умолчанию с
высотой 15 рядов.
     
     POPHELP /D /M /S F:\
     
     Обеспечить подкачку программы POPHELP на  диск при  использовании
для файлов подкачки корневого каталога дисковода "F:". Отменить  вывод

                             - 40 -
сообщений о подкачке.
     
     POPHELP /E TURBO MYPROG.PAS
     
     Временно загрузить  программу POPHELP и запустить интегрированную
среду TURBO.
     
     POPHELP /N
     
     Сделать программу POPHELP резидентной без подкачки.
     
     POPHELP /U
     
     Выгрузить резидентную копию программы POPHELP.
     
     POPHELP /B
     
     Обеспечить использование программой POPHELP только черных или бе-
лых ($07, $0F, $70) атрибутов отображения.
                               
     Когда используется  необязательный  параметр  "/E",  то программа
POPHELP является резидентной только в течение того времени,  пока  вы-
полняется  указанная  программа.  Когда  эта программа завершается, то
POPHELP автоматически сама удаляет себя из памяти. Для того, чтобы за-
пустить программу,  требующую выполнения (которая задана с помощью па-
раметра ProgToExec),    программа    POPHELP    использует   программу
COMMAND.COM, поэтому эта программа может быть указана где-то  в  "пути
доступа"  DOS.PATH.  Кроме того, Вы можете указать любые параметры ко-
мандной строки, которые обычно используются программой, за исключением
того, что запрещается переназначать ввод или вывод.
     
     Если Вы обладаете расширенной ("extended") памятью, то  наилучшим
способом предоставить программе POPHELP возможность использовать такое
преимущество является применение псевдодиска ("RAM disk"). Используйте
необязательный  параметр "/S" для того, чтобы задать для POPHELP букву
дисковода для псевдодиска, и он станет подкачивать  информацию  в  эту
область и обратно. Для файла оперативной информационной помощи, размер

                             - 41 -
которого  соответствует  размеру файла OPRO.HLP, Вам потребуется около
360 Кбайт свободного пространства на псевдодиске.
     
     В то время, когда программа POPHELP осуществляет подкачку на диск
и с диска, она обычно выводит сообщения на верхнюю строку экрана. Если
Вы осуществляете подкачку на псевдодиск, эта строка сообщений о стату-
са может раздражать. В этом случае можно  использовать  необязательный
параметр "/M", чтобы отменить выдачу этих сообщений.
     
     Т.к. размеры окна помощи могут быть изменены после того, как всп-
лывает  POPHELP,  то  параметр  "/H" практически бесполезен. Он введен
только из-за того, что такой параметр имеется в программе GUIDE (в ко-
торой отсутствует средство для изменения размеров окна).
     
     POPHELP использует три отличающихся друг от друга  "горячих  клю-
ча". По умолчанию в качестве "горячих ключей" принимаются следующие:
     
     <LeftShift> <F1>
     (Прим.перев.: "<LeftShift>" - левая клавиша изменения регистра.)
     Найти тематический  раздел  в тексте помощи на основе слова, ука-
занного курсором
     
     <LeftShift> <F2>
     Повторно вывести на экран предыдущий тематический  раздел  текста
помощи
     
     <LeftShift> <F3>
     Вывести на экран указатель  для текста помощи
     
     "Горячими ключами"  можно  управлять с помощью следующих необяза-
тельных параметров:
     
     /L    Найти тематический вопрос в тексте помощи
     /P    Повторно вывести на экран  предыдущий  тематический  вопрос
           текста помощи
     /I    Вывести на экран указатель  для текста помощи
                                                    

                             - 42 -
     Альтернативные "горячие ключи" Вы можете указать на  этапе  уста-
новки и настройки программы  POPHELP.  На  командной  строке  "горячий
ключ"  задается в виде шестнадцатиричного слова. Высший байт указывает
управляющую(ие) клавишу(и), которая(ые) должна(ы) быть нажата(ы); этот
байт не должен быть нулевым. Низший байт задает  сканирующий  код  для
"горячего ключа".
     
     Управляющие клавиши имеют следующие коды:
     
     RightShift (правая клавиша изменения регистра)  - 01
     LeftShift  (левая клавиша изменения регистра)   - 02
     CTRL                                            - 04
     Alt                                             - 08
     
     Действующими кодами сканирования (в шестнадцатиричном виде) явля-
ются следующие:
     
     A - 1E      N - 31      0 - 0B      F1  - 3B      [ - 1A
     B - 30      O - 18      1 - 02      F2  - 3C      ; - 27
     C - 2E      P - 19      2 - 03      F3  - 3D      : - 33
     D - 20      Q - 10      3 - 04      F4  - 3E      / - 35
     E - 12      R - 13      4 - 05      F5  - 3F      \ - 2B
     F - 21      S - 1F      5 - 06      F6  - 40      ] - 1B
     G - 22      T - 14      6 - 07      F7  - 41      , - 28 ?
     H - 23      U - 16      7 - 08      F8  - 42      . - 34
     I - 17      V - 2F      8 - 09      F9  - 43      ' - 29 ?
     J - 24      W - 11      9 - 0A      F10 - 44
     K - 25      X - 2D                  F11 - 57
     L - 26      Y - 15                  F12 - 58
     M - 32      Z - 2C
                                                               
     Например:
     
     /L 0244  выполняет  поиск, если нажаты клавиши <LeftShift><F10>
     /P 0819  показывает предыдущий тематический раздел текста помощи,
              когда  нажаты клавиши <Alt><P>
     /I 0517  отображает указатель текста помощи, когда нажаты  клави-

                             - 43 -
              ши <Ctrl><RightShift><I>
     
     Нельзя использовать для двух "горячих ключей" один и тот же  ска-
нирующий  код, даже если управляющие клавиши отличаются друг от друга.
Например, Вы не имеете права использовать для одного "горячего  ключа"
сочетание клавиш <Alt><F1>, а для другого - <Ctrl><F1>. Вы должны ука-
зать  для  "горячего  ключа" по крайней мере одну управляющую клавишу,
т.е. высший байт заданного Вами слова не должен быть нулевым.
     
     При установке и настройке программы POPHELP в режиме подкачки не-
обходимо  постоянно  помнить  об  одном  серьезном  ограничении. Когда
всплывает программа POPHELP, она отменяет все программы типа TSR, заг-
ружаемые  после нее. Это является необходимым, т.к. она перезаписывает
их память в тот момент, когда происходит подкачка. К  некоторым  прог-
раммам типа  TSR, особенно к сетевым оболочкам и программам коммуника-
ции, не будет доступа, когда они  отменяются  подобным  образом:  сеть
окажется  оторванной  от  станции,  которая не будет ей отвечать после
этого момента, или коммуникативная программа потеряет входные символы.
Эти трудности могут быть исключены, если загружать  программу  POPHELP
после загрузки таких программ типа TSR. Чтобы исключить эту общую про
блему в целом, программа POPHELP автоматически определяет, когда имен-
но  она  загружена до загрузки оболочки NovellNetWare и "отказывается"
всплывать в такой ситуации.
     
     Использование программы POPHELP
     
     Как только программа POPHELP установлена и настроена,  Вы  можете
приступить к  своей работе. Наиболее вероятно, что Вы начнете использо-
вать эту программу внутри своего текстового редактора или  внутри  ин-
тегрированной среды TURBO.
     
     Если Вы  желаете  использовать  специальную  подпрограмму  пакета
Object Professional и Вы можете вспомнить ее имя, но не помните ее па-
раметров, установите курсор редактора  внутри  имени  этой  процедуры,
набранного Вами , или непосредственно после него. Затем нажмите "горя-
чий ключ"  поиска,  что  по  умолчанию  соответствует  нажатию  клавиш
<LeftShift><F1>. Программа POPHELP  будет  просматривать  тематический

                             - 44 -
перечень в поисках точного соответствия (игнорируя регистры  буквенных
символов). Если поиск завершился неудачно, она просматривает тематики,
имена которых начинаются с заданной для поиска строки символов.
     
     Если POPHELP может найти соответствующую тематику с  помощью  той
или  другой  из  этих двух стратегий поиска, она выведет на экран окно
помощи, показывающее Вам подробности, относящиеся к этой подпрограмме.
Если поиск неудачен, она вместо этого выведет на экран окно с  именами
всех модулей Object Professional.
     
     Если Вы  не  знаете  точно имя подпрограммы, но помните, к какому
модулю она относится, нажмите тот "горячий ключ", с  помощью  которого
на экран  выводится  указатель, что по умолчанию соответствует нажатию
клавиш <LeftShift><F3>, и Вы получите список  имен,  показывающий  все
модули  Object Professional. Выберите тот модуль, который Вым нужен, и
на экране появится список тематических вопрососв относящихся  к  этому
модулю.
     
     В пределах окна помощи Вы можете использовать клавиши со стрелка-
ми упрвления  курсором, чтобы переместить курсор в выделенные области,
которые указывает на связи  с  другими  тематическими  вопросами.  Как
только  курсор  установлен внутри интересующей Вас выделенной области,
нажмите на  клавишу  <Enter> для того, чтобы вызвать этот тематический
вопрос. Таким способом Вы можете просмотреть при желании всю базу дан-
ных оперативной информационной помощи.  Нужно  заметить,  что  клавиши
<Tab>  и  <ShiftTab> заставляют курсор перепрыгивать сразу же от одной
"связи" к другой.
     
     После того,  как Вы увидели нужную Вам информацию, Вы можете вер-
нуться к основной прикладной программе путем нажатия на клавишу <Esc>.
     
     Если Вы хотите еще раз посмотреть тот же самый тематический  воп-
рос помощи, нажмите на "горячий ключ"  вызова  предыдущего  фрагмента,
что по умолчанию соответствует нажатию на клавиши <LeftShift><F2>.
     
     Программа POPHELP   базируется   на  объекте  ScrollingHelpWindow
("Прокрутка_Окна Помощи") из модуля OPHELP. Используя этот  объект  (в

                             - 45 -
противоположность  объекту  PagedHelpWindow - "Постраничное_Окно_Помо-
щи"), программа POPHELP может обеспечить построчную  и  горизонтальную
прокрутку  текста  помощи,  точную регулировку размеров окна и возмож-
ность свободного перемещения курсора по окну помощи.
     
     Перенесение текста помощи в Ваш редактор
     
     Наряду с другими своими  возможностями  программа  POPHELP  может
также  переносить  помеченные  блоки текста оперативной информационной
помощи в Ваш редактор. Выделение/перенос действует в основном так  же,
как копирование блоков в интегрированной среде TURBO.
     
     Сначала следует  поместить курсор Вашего редактора точно в то по-
ложение, куда Вы хотите перенести текст помощи. Затем осуществите  по-
явление экрана помощи и выберите нужный тематический  вопрос.  Переме-
щайте  курсор  по  тексту до тех пор, пока он не установится на первом
символе, который Вы будете переносить. Отметьте начало блока путем на-
жатия на клавишу <F7> (или на клавиши  <CtrlK><B>).  Перемещайтесь  по
тексту опять до тех пор, пока курсор не установится на самом последнем
символе,  который Вы хотите перенести. Нажмите на клавишу <F8> (или на
клавиши <CtrlK><K>) для того, чтобы отметить  конец  блока.  Программа
POPHELP выделит выбранный блок текста.  Наконец,  нажмите  на  клавиши
<F4> (или  на клавиши <CtrlK><C>) для того, чтобы скопировать отмечен-
ный блок в свой редактор. Программа POPHELP немедленно исчезнет с  эк-
рана и начнет интерпретировать клавиатурный ввод для основной приклад-
ной  программы.  Когда  Вы в следующий раз вызовете программу POPHELP,
этот блок  будет  невидим.  Если Вы захотите в какой-то момент времени
переключить видимость этого блока, то нажмите на клавиши <CtrlK><H>.
     
     Если перенесенный текст заставляет Ваш  редактор  прокручиваться,
то экран  дисплея может на какое-то время приобрести довольно странный
вид, т.к. возможно, что программа POPHELP может осуществлять ввод  ин-
формации намного быстрее, чем Ваш редактор готов ее воспринимать.  Од-
нако Ваш редактор остановится, когда POPHELP завершит перекачку симво-
лов.
     
     Если используемый Вами редактор обладает средством автоматическо-

                             - 46 -
го разделения  на абзацы, то, возможно, Вы пожелаете эту возможность -
например, клавиши <CtrlQ><I> переключают автоматическую установку  аб-
зацев в пакете TURBO IDE - отменить во время перекачивания текста. Ес-
ли автоматическая расстановка абзаца сохраняется при пересылке текста,
то пересылаемый текст может постепенно передвинуться к правой  границе
экрана.
     
     Если Ваш  редактор интерпретирует вводимые непосредственно управ-
ляющие символы (как это делает любой совместимый с WordStar редактор),
то Вы захотите избежать пересылки какого-либо фрагмента текста помощи,
содержащего такие символы. В программе  OPRO.HLP  управляющие  символы
содержатся только в примерах изображения линий.
     
     Если окажется, что пересылаемый фрагмент больше,  чем  внутренний
буфер пересылки, имеющийся в POPHELP (512 ударов клавиш), то программа
POPHELP должна сама подкачиваться в память для того,  чтобы  пополнить
буфер  каждый раз, когда он выкачивается. Когда это происходит, то пе-
ресылка текста временно приостанавливатся до тех пор,  пока  буфер  не
будет  снова  заполнен и POPHELP будет перекачана опять. В зависимости
от скорости действия Вашей системы и от того, подкачивается ли POPHELP
в  память  типа EMS или на диск, это прерывание процесса может длиться
от долей секунды до нескольких секунд. Если POPHELP не в состоянии бе-
зопасно подкачивать себя, когда буфер опустошен, пересылка текста  мо-
жет  быть  преждевременно  прекращена. Этого не должно случиться в том
случае, если POPHELP используется с современными редакторами для прог-
раммистов; такая беда  может  произойти  при  использовании  редактора
EDLIN .
     
     Перечень команд программы POPHELP
     
     Нижеприведенная таблица обобщает команды программы POPHELP, кото-
рые мы уже обсудили, а также те,  о которых еще не упоминали.
     
     <F1>
     Отображает на экране главный тематический указатель.
     
     <AltF1>

                             - 47 -
     Отображает на  экране  тематический  вопрос, который выводился на
экран непосредственно  перед  текущим  тематическим  вопросом.  Курсор
внутри окна оперативной информационной помощи устанавливается в то по-
ложение, которое он в нем занимал в последний раз.
     
     <F3>
     Опрашивает имя  нового файла оперативной информационной помощи. К
введенному Вами имени  по  умолчанию  добавляется  расширение  ".HLP".
Программа POPHELP  будет  читать  любой файл, который откомпилирован с
помощью сервисной программы MAKEHELP пакета Object Professional версии
1.0. Отметим, что для каждого файла помощи требуется пространство  па-
мяти,  которое пропорционально размеру файла помощи и числу тематичес-
ких вопросов. Программа POPHELP резервирует определенный объем памяти,
когда она становится резидентной, и после этого она уже не может  уве-
личить  этот объем. Поэтому в том случае, если Вы предполагаете загру-
жать несколько файлов помощи в течение одного сеанса работы  программы
POPHELP, Вам следует загрузить самую большую из них в тот момент, ког-
да программа POPHELP впервые становится резидентной.
     
     POPHELP сконфигурирована с учетом того, что максимальное количес-
тво перекрестных ссылок на один тематический вопрос  равно  150.  Этот
предел   достаточно  большой  для  того,  чтобы  управлять  программой
OPRO.HLP, но может оказаться недостаточным для  более  крупных  файлов
помощи. Программа POPHELP просто игнорирует элементы данных при превы-
шении заданного предела.
     
     <F4>, <CtrlK><C>
     Если блок помечен и он является видимым, то эта команда пересыла-
ет его из системы оперативной информационной помощи в основной  редак-
тор.
     
     <F5>, <AltZ>
     Переключает режим распахивания окна во весь экран и возвращения к
предыдущему размеру.
     
     <F6>, <AltM>
     Вводит режим  перемещения/изменения  размера окна - Вы можете ис-

                             - 48 -
пользовать клавиши управления курсором для того, чтобы передвинуть ок-
но на  экране, или сочетание клавиши переключения регистра ("Shift") и
клавиш управления курсором для того, чтобы изменить размеры окна.  От-
метим,  что  размеры окна не могут быть изменены, если окно распахнуто
во весь экран.
     
     <F7>, <CtrlK><B>
     Отмечает начало выделяемого блока.
     
     <F8>, <CtrlK><K>
     Отмечает конец выделяемого блока.
                   
     <CtrlK><H>
     Делает невидимым  или  снова видимым текущий помеченный блок. Ко-
манда <F4> будет пересылать отмеченный блок только в том случае,  если
он видимый.
     
     <PgUp>,<PgDn>
     Осуществляет перемещение к следующей или предыдущей странице  те-
кущей тематике текста оперативной информационной помощи.
     
     <Left>, <Right>, <Up>, <Down>
     Перемещает курсор  по  экрану  оперативной информационной помощи.
Попытка переместить курсор за край окна  вызовет  очередную  прокрутку
текста в окне.
                                                      
     <Tab>
     Вызывает скачкообразное  передвижение  курсора к следующей перек-
рестной ссылке тематического вопроса, если таковая имеется.
     
     <ShiftTab>
     Вызывает скачкообразное передвижение курсора к предыдущей  перек-
рестной ссылке тематического вопроса, если таковая имеется.
     
     <Enter>
     Обеспечивает выбор  тематического вопроса по перекрестной ссылке,
заданной положением курсора, если такой вопрос имеется. Новый  темати-

                             - 49 -
ческий вопрос загружается  в окно, и курсор позиционируется на первый
символ в тематическрм вопросе.
     
     <Esc>
     Осуществляет выход из  программы  POPHELP.  Текущий  тематический
вопрос и  страница запоминаются и могут быть повторно вызваны нажатием
на "горячий ключ" вызова предыдущего  тематического  вопроса,  что  по
умолчанию соответствует нажатию на клавиши <LeftShift><F2>.
     
     Изменение файла помощи пакета Object Professional
     
     Мы поставляем исходный текст для файла оперативной информационной
помощи пакета Object Professional на тот  случай,  если  Вы  пожелаете
ввести  в  него  дополнительные замечания или создать документацию для
своих собственных подпрограмм.
     
     Программа OPRO.HLP  составлена из  ряда исходных файлов: основным
файлом является файл OPRO.TXT, а остальные  файлы  представляют  собой
включаемые  файлы, соответствующие именам OPRO.T*. Основной файл доку-
ментально устанавливает, какие модули должны находиться в каждом вклю-
чаемом файле. Он также содержит документальные описания многих  согла-
шений, которые используются при разработке файла оперативной  информа-
ционной помощи.
     
     Вы имеете возможность изменять исходные файлы  с  помощью  любого
текстового редактора.  Для получения более подробной информации обрати-
тесь к разделу 4.G настоящего пособия.



     F. DESKPOP: программа управления настольным средством

     Изо всех  демонстрационных  программ,  которые включены в систему
Object Professional, наиболее  наглядно  иллюстрирует  примерами  свои
возможности  программа DESKPOP. DESKPOP представляет собой находящуюся
резидентно в памяти "управляющую программу настольного средства",  ко-
торую во многих отношениях можно сравнить с программой  SideKick  Plus
фирмы Borland. Программа DESKPOP предоставляет Вам средство управления
файлами,  текстовый  редактор, средство просмотра файлов, калькулятор,
календарь, таблицу быстрых ссылок и телефонную книгу/средство  автома-
тического  набора телефонных номеров с помощью модема - все в виде од-
ной программы типа TSR, которая использует только 6 Кбайт памяти!

     Несмотря на  то,  что  программа  DESKPOP была разработана только
применительно к текстовому режиму, ее пользовательский интерфейс подо-
бен  пользовательскому  интерфейсу  систем  Microsoft  Window  и  OS/2
Presentation Manager. Все составляющие эту программу части отображают-
ся  на  настольном экране в виде отдельных окон, которые можно переме-
щать, распахивать во весь экран и увеличивать или уменьшать  в  разме-
рах.  Одновременно могут быть открыты несколько окон, и Вы имеете воз-
можность переключаться от одного окна к другому путем простого нажатия
на клавишу. Или же, если это для Вас предпочтительнее, Вы  можете  ис-
пользовать  "мышь", т.к. DESKPOP обеспечивает полную поддержку средств
для работы с этим манипулятором.

     DESKPOP является также полностью конфигурируемой программой. Вос-
пользовавшись сопровождающей ее программой DPINST, Вы можете  изменять
"горячие клавиши" программы DESKPOP, используемые в ней цвета, ее кла-
виши  назначения  - одним словом, абсолютно все из того, что Вы только
могли бы пожелать изменить и что мы смогли себе  представить.  И  даже
если  мы  о чем-либо забыли, Вы все равно имеете возможность это изме-
нить, потому что в Ваше распоряжениепредоставлен также и полный исход-
ный текст программы.

     Следующий раздел поясняет, как работает программа DESKPOP и каким
образом Вы  можете ее использовать. А в разделе, расположенном дальше,
содержится описание программы DPINST.


                                 - 2 -
     1. Программа DESKPOP

     Для того, чтобы загрузить программу DESKPOP, введите в  командную
строку DOS следующую команду:

     DESKPOP [Параметры]

     Здесь аргумент "Параметры" представляют собой один или  несколько
необязательных параметров из перечисленных ниже:

     /U      Выгрузить программу DESKPOP из памяти. Если  DESKPOP  еще
             не была установлена или выгружать ее небезопасно, то  вы-
             полнение программы  выгрузки  будет прервано с сообщением
             об ошибке.

     /E      Не использовать память типа EMS. Если  этот  параметр  не
             задан, то  программа  DESKPOP будет пытаться использовать
             память типа  EMS, если она доступна, для размещения своих
             буферов подкачки.

     /M      Отменить вывод на экран сообщений о процессе подкачки.

     /K      Не использовать ("Kill", т.е. "удалить") "мышь". Этот па-
             раметр особенно полезен, если программа управления  Вашим
             манипулятором  требует много времени для того, чтобы ини-
             циализировать аппаратные средства "мыши".

     /P_путь Определяет  "путь  доступа"  ("Path") для загрузки файлов
             подкачки. Параметр "путь" должен представлять  собой  имя
             каталога, а не файла.

     /?      Вывести на экран файл оперативной информационной помощи.

     Обращаем Ваше внимание на то, что при вводе параметров  командной
строки вместо символа "/" разрешается использовать символ "-".

     Как только  программа  DESKPOP  становится резидентной, она может

                                 - 3 -
быть  вызвана  с помощью любой из двух  комбинаций  "горячих клавиш" -
<Alt><LeftShift><Tab>  или <Ctrl><RightShift><D>. (Назначения "горячих
клавиш" могут быть изменены с помощью программы DPINST.)

     (Прим. перев.: здесь и далее  по  тексту  используются  следующие
обозначения для клавиш и кнопок "мыши":

     - название символьной или функциональной клавиши клавиатуры  при-
водится внутри угловых скобок, например, <Alt>, <D>; клавиша для ввода
пробела обозначается  как  <Space>;  клавиша  для удаления предыдущего
введенного символа обозначается как <BkSp>;

    - для обозначения одновременного нажатия на функциональную и сим-
вольную клавиши обозначения этих клавиш внутри угловых скобок указыва-
ются их названия вместе, например, <AltQ>;

     - для указания клавиш управления курсором, которые обозначены  на
клавиатуре  стрелками, внутри угловых скобок ставится: <Up> - "вверх",
<Down> - "вниз", <Left> - "влево", <Right> - "вправо";

     - для обозначения левой и правой клавиш "Shift" используются  со-
ответственно  обозначения:  <RightShift>  -  правая  клавиша  "Shift",
<LeftShift> - левая клавиша "Shift";

     - для обозначения кнопки "мыши" внутри угловых скобок указывается
"Click" (или "Clk") - "нажать и отпустить" и  соответствующая  кнопка:
"Right"  - "правая", "Left" - "левая", "Both" - обе одновременно, нап-
ример, <ClickLeft>.)

     Несмотря на то, что после того, как программа DESKPOP  становится
резидентной,  она сама использует только 6 Кбайт оперативной памяти, в
действительности она резервирует заблаговременно для себя всю имеющую-
ся в наличии память, чтобы обеспечить себе достаточное рабочее  прост-
ранство  сразу  же, как только она "всплывет". (Подробные объяснения о
том, как  работают подкачиваемые программы типа TSR, приведены в доку-
ментации, описывающей модуль OPSWAP.) Когда программа DESKPOP уже заг-
ружена, она требует, чтобы в ее распоряжение было  предоставлено,  как

                                 - 4 -
минимум, около 415 Кбайт оперативной памяти.

     Основное меню

     После того,  как Вы активизируете DESKPOP, используя одну из двух
"горячих клавиш", Ваш экран будет разделен на три части. Верхняя стро-
ка экрана показывает основное меню программы DESKPOP,  к  которому  мы
будем  в  данный  момент  обращаться. Нижняя строка представляет собой
строку состояния. Она используется для того, чтобы выводить  на  экран
напоминания о назначениях клавиш, сообщения об ошибках и запросы. Все,
что находится между верхней и нижней строками экрана, представляет со-
бой  "настольное рабочее средство" ("desktop"), т.е. ту область, в ко-
торой будут отображаться окна.

     Основное меню выглядит приблизительно следующим образом:

Files  Browser   Calculator Editor  caLendar Phonebook Reference  Help
(Фай-  (Програм- (Кальку-   (Редак- (Кален-  (Телефон-  (Ссылка)  (По-
 лы)   ма про-   лятор)     тор)     дарь)   ная книга)          мощь)
       смотра)

     (Прим. перев.: здесь и далее прописная буква, имеющаяся в  назва-
нии пункта меню, используется как  "горячая  клавиша"для  обращения  к
данному элементу.)

     Каждый из этих пунктов меню  соответствует  окну,  которое  может
быть  открыто  на  экране.  Для того, чтобы открыть одно из этих окон,
достаточно просто переместить светящееся пятно ("highlight") на  соот-
ветствующий  пункт меню и нажать клавишу <Enter> или выбрать эту пози-
цию с помощью левой кнопки манипулятора "мышь". Если открыто несколько
окон, Вы можете также использовать основное меню для того, чтобы акти-
визировать неактивное окно.

     Вашему выбору  предоставлены следующие пункты меню:

     Files (Файлы)
     Программа управления файлами. Предназначена для того, чтобы отоб-

                                 - 5 -
ражать на экране каталоги,  копировать/перемещать/удалять/переименовы-
вать файлы и т.п.

     Browser (Программа просмотра)
     Программа просмотра  файлов.  Предназначена  для  вывода на экран
файлов любого  размера, представленных в коде ASCII или в двоичном ко-
де.
     (Прим. перев.:  "ASCII"  (American  Standart Code for Information
Interchange) - Американский стандартный код для обмена информацией.)

     Calculator (Калькулятор)
     Калькулятор программиста, имеющий пять режимов работы.

     (Прим. перев.:  в  оригинале  пропущено описание позиции "Editor"
("Редактор)".)

     caLendar (Календарь)
     Календарь, который может показывать на экране любой месяц с янва-
ря 1600 года до декабря 3999 года.

     Phonebook (Телефонная книга)
     Персональная телефонная книга и модем для набора телефонных номе-
ров.

     Reference (Ссылка)
     Таблица быстрых ссылок для программиста.

     Help (Помощь)
     Простое средство оперативной информационной помощи, которое пока-
зывает, какие команды разрешается применять в каждом окне.

     Основное меню  может быть вызвано почти из любого места программы
путем нажатия на клавишу <F10>.

     Окна в "настольном рабочем средстве"

     За исключением окна "Help" ("Помощь"), каждое из окон в "настоль-

                                 - 6 -
ном рабочем средстве" выглядит приблизительно следующим образом:

 __ 1 ____ Quick Reference Chart ___________ | __
│        (Таблица быстрых ссылок)               ^
│    Hex     Ascii    Key    Extended   Scan
│(Шестнад-   (Код    (Клави- (Расши-   (Скани-
│цатиричный) ASCII)    ша)    ренный)  рующий)
│________________________________________________
│
│     19      EM       ^Y      AltP       P     #
│     1A      SUB      ^Z      Alt[       [     #
│     1B      ESC      ^[      Alt]       ]     #
│     1C      FS       ^\      AltEnter   Enter #
│     1D      GS       ^]                 Ctrl  v
│<#############################################>+

     Число, расположенное  в верхнем левом углу на границе окна, пока-
зывает номер окна. Вы можете использовать этот номер для  того,  чтобы
быстро  перейти в нужное окно: например, нажатие на клавиши <Alt2> ак-
тивизирует окно, имеющее номер 2. Если у Вас есть "мышь", то Вы можете
с помощью левой кнопки "мыши" установить ее указатель на этот "горячий
участок" для того, чтобы активизировать локальное меню  данного  окна.
(Об этом читайте в следующем разделе.)

     Расположенная в  верхнем  правом  углу стрелка, указывающая вверх
или вниз, представляет собой "кнопку распахивания окна". При установке
с  помощью  левой кнопки "мыши" ее указателя на этот "горячий участок"
окно будет либо "распахиваться" во весь экран,либо принимать свой пер-
воначальный размер. (В окнах "Calculator" ("Калькулятор") и "Calendar"
("Календарь") "кнопка распахивания окна" отсутствует.)

     Между этими двумя "горячими участками" расмещается название окна,
которое используется как один большой "горячий участок" (или  "горячая
область").  Устанавливая с помощью левой кнопки "мыши" ее указатель на
любую позицию в пределах названия окна, Вы  активизируете  режим,  при
котором  "мышь"  можно использовать для того, чтобы перемещать окно по
экрану. Когда Вы завершите это  перемещение  окна,  нажмите  на  левую

                                 - 7 -
кнопку "мыши" во второй раз.

     Знак "плюс" ("+") в нижнем правом углу на границе окна тоже явля-
ется  "горячим участком". При установке на него указателя "мыши" с по-
мощью ее левой кнопки активизируется режим, при котором  "мышь"  можно
использовать для управления размером окна.Когда Вы завершите изменение
размера  окна, нажмите во второй раз на левую кнопку "мыши". (Отметим,
что нельзя изменять размеры окон "Calculator" и "Calendar".)

     Если окно допускает прокрутку текста,  оно  будет  иметь  линейку
прокрутки на  правом и нижнем краях своей границы, как показано в дан-
ном примере. (Прим. перев.: линейки прокрутки в тексте перевода  пока-
заны с помощью вертикальной и горизонтальной последовательности симво-
лов "#".) Они могут быть использованы для того, чтобы быстро  перемес-
титься с одного места к другому.

     "Мышь" можно  использовать также и для того, чтобы активизировать
неактивное окно. Если Вы можете увидеть какую-либо часть  окна  (кроме
тени  окна), то Вы можете немедленно его активизировать, выбирая с по-
мощью левой кнопки "мыши" любую позицию в этом окне. Подобным же обра-
зом можно активизировать основное меню DESKPOP, выбрав с помощью левой
кнопки "мыши" любую позицию в верхнем ряду экрана. Если курсор  "мыши"
в данный момент находится в верхней части одного из пунктов  меню,  то
этот пункт будет выделен (высвечен), но собственно выбора этого пункта
меню не произойдет. (Вы можете осуществить выбор этого пункта меню, на-
жав  на  левую кнопку "мыши" во второй раз.) Если же курсор установлен
не на  одном  из  пунктов  меню, то будет выделен предыдущий выбранный
пункт меню - точно так же, как это происходит при нажатии  на  клавишу
<F10>.

     Когда открывается  новое  окно, оно помещается на экране просто в
дополнение к  предыдущему активному окну. Как только окно будет откры-
то, оно будет сохранять тот же самый номер до тех  пор,  пока  его  не
закроют. Если закрывается окно, находящееся в середине  последователь-
ности  окон, то следующему открывающемуся окну присваивается его номер
(или наименьший из свободных номеров, если было закрыто не одно  окно,
а несколько).

                                 - 8 -

     Обычно когда Вы переключаетесь  на  "следующее"  окно  (используя
клавишу <F6>), то становится активным окно, имеющее следующий по  воз-
растанию  номер,  или,  если такого окна нет, то первое окно. Заметим,
однако, что программа управления окнами в действительности не обращает
внимания на номера окон. Если Вы активизируете открытое, но не  актив-
ное окно, находящееся в середине стека - либо используя сочетание кла-
виш  <Alt-n>, где "n" означает номер окна, либо выбирая окно с помощью
левой кнопки "мыши", либо выбирая его из основного меню - это окно бу-
дет помещено в вершину стека. Например, если окна были  предварительно
накоплены в стеке в порядке 1-2-3-4, причем окно 4 было в верхней час-
ти  стека,  и Вы активизируете окно 2 путем нажатия на клавиши <Alt2>,
то новый порядок окон в стеке станет 1-3-4-2.

     Локальные меню

     Как уже было сказано раньше, каждое из окон имеет локальное меню,
которое может быть активизировано либо нажатием на клавишу <F9>,  либо
путем  установки  с  помощью левой кнопки "мыши" ее указателя на номер
окна в верхнем левом углу на его границе. Содержимое каждого  меню не-
сколько отличаются при переходе от одного окна к другому,  но  все они
предоставляют по крайней мере четыре позиции для выбора:

 __________________________________
│                                  │
│     Close (Закрыть)              │
│     Move  (Переместить)          │
│     Resize (Изменить размер)     │
│     Zoom   (Распахнуть окно)     │
│__________________________________│

     Позиция "Close" ("Закрыть") выполняет именно то действие, которое
заключено в значении этого слова: она  предоставляет  Вам  возможность
закрыть активное окно.

     Позиция "Move" ("Переместить") активизирует режим, в котором  для
перемещения окна по экрану в новое положение можно использовать клави-

                                 - 9 -
ши  управления курсором. Когда перемещение будет закончено, нажмите на
клавишу <Enter>.

     Подобным же образом, позиция "Resize" ("Изменить размер")  позво-
ляет  Вам изменять при помощи клавиш управления курсором размер актив-
ного окна. Нажмите на клавишу <Enter>,  когда  закончите  осуществлять
изменение размеров.

     Позиция "Zoom " ("Распахнуть окно") предоставляет Вам возможность
временно так изменить размер активного окна, что оно заполнит весь эк-
ран. Если же окно уже было распахнуто, то оно вместо этого будет восс-
тановлено  в  своих первоначальных размерах ("unzoomed", т.е. "сверну-
тый").

     Необходимо отметить, что позиции "Resize" и "Zoom " не могут быть
использованы   в   меню  двух  окон,  "Calculator"  ("Калькулятор")  и
"Calendar" ("Календарь"), поскольку их размеры являются  фиксированны-
ми.

     Дополнительные позиции, предоставляемые для выбора локальными ме-
ню данных окон, описываются ниже в соответствующих разделах.

     "Горячие клавиши"

     Все функции,  которые  только что были описаны, можно осуществить
как с помощью клавиатуры, так и с помощью кнопок "мыши". Во  всех  ок-
нах, которые  могут  быть выведены на экран "настольного средства" (за
исключением окна "Help" ("Помощь")), можно использовать следующие "го-
рячие клавиши":

     <AltM>
     Переместить активное окно. Используйте клавиши управления  курсо-
ром  для того, чтобы передвинуть окно в желаемое положение, затем наж-
мите на клавишу <Enter>.

     <AltR>
     Изменить размеры активного окна. Используйте  клавиши  управления

                                 - 10 -
курсором для того, чтобы отрегулировать размеры окна в соответствии со
своими пожеланиями, затем нажмите на клавишу <Enter>.

     <F5>,<AltZ>
     Распахнуть активное  окно до размеров экрана/восстановить прежние
размеры окна.

     <F6>
     Активизировать следующее окно.

     <CtrlF6>
     Активизировать предыдущее окно.

     <Alt1>...<Alt8>
     Активизировать окна, имеющие номера с 1 по 8.

     <F9>
     Вызвать локальное меню.

     <F10>
     Вызвать основное меню.

     <AltX>
     Выйти из программы DESKPOP.

     <AltU><AltU>
     Выгрузить из памяти программу DESKPOP.

     <AltS>
     Показать объем располагаемой памяти.

     Files (Файлы)
     (Прим. перев.: здесь и далее названия элементов  меню  и  подменю
сначала  приводится на английском языке, т.к. именно в этом виде поль-
зователь видит его на экране.)

     Программа управления  файлами  программы  DESKPOP основана на ис-

                                 - 11 -
пользовании объекта "DirList" ("Список_каталогов"), который реализует-
ся с помощью модуля OPDIR. Подробные сведения о том, как работает спи-
сок каталогов с множественным  выбором  (позволяющий  помечать  блоки)
приведены в документации, описывающей этот модуль.

     Когда окно "Files" ("Файлы") станет активным,  линейка  состояния
будет выглядеть приблизительно следующим образом:

<F3> New mask <F9> Menu | Disk: 2,258,944  Files: 58  Size: 3,042,097
     (Новая       (Меню) (Дисковое         (Число    (Раз-
      маска)             пространство)     файлов)    мер)

     Число, стоящее рядом с позицией  "Disk:"  ("Дисковое  пространст-
во"), показывает Вам, какое пространство осталось на диске, содержащем
файлы,  отображенные в данном окне. Число, расположенное около позиции
"Files:" ("Файлы"),  показывает Вам количество файлов, которые отобра-
жаются на экране (при этом каталоги не учитываются). И, наконец, число
возле позиции "Size:" ("Размер") показывает Вам общий размер этих фай-
лов.

     В дополнение к стандартным  командам  для  списка  каталога  окно
"Files" также обеспечивает выполнение следующих команд:

     <F3>
     Указать новую маску файла.

     <Space>  <пробел>
     Осуществить переключение  от  режима  "Name  mode"  (режим вывода
имен) к режиму "All mode" (общий режим)  и  обратно.  В  режиме  "Name
mode" на экране отображаются только имена соответствующих файлов и ка-
талогов.  В режиме "All mode" на экран выводятся также размеры файлов,
даты и атрибуты.

     <CtrlK><C>
     Скопировать помеченные  файлы  по указанному адресу "Имя_дисково-
да:\каталог". Если не помечены никакие файлы, то копированию  подлежит
текущий выделенный файл.

                                 - 12 -

     <CtrlK><V>
     Переместить помеченные  файлы по указанному адресу  "Имя_дисково-
да:\каталог". Если не помечены никакие файлы, то перемещению  подлежит
текущий выделенный  файл. Файлы могут быть помещены как на другой дис-
ковод, так и в другой каталог.

     <CtrlK><Y>
     Удалить помеченные  файлы/каталоги. Если никакие файлы не помече-
ны, то удалению подлежит текущий выделенный файл. Заметим, что катало-
ги могут быть удалены только в том случае, если они пусты.

     <CtrlY>
     Удалить выделенный файл/каталог. Заметим, что каталоги могут быть
удалены только в том случае, если они пусты.

     <CtrlK><N>
     Переименовать выделенный файл.

     <AltE>
     Загрузить выделенный файл в окно "Editor" ("Редактор"). При  этом
окно  "Editor"  откроется автоматически, если оно еще не было открыто.
Если это окно уже было открыто и если редактируемый файл был модифици-
рован, то система выдаст Вам запрос, желаете ли Вы его сохранить. Если
Вы ответите "Yes" ("Да), то файл будет сохранен, прежде чем новый файл
будет загружен в окно. Если Вы ответите "No" ("Нет"), то все  редакци-
онные изменения текущего файла будут потеряны. Если Вы нажмете на кла-
вишу <Esc>, то команда будет отменена.

     <AltB>
     Загрузить выделенный  файл  в окно "Browser" ("Программа просмот-
ра"). Окно "Browser" откроется автоматически, если оно еще не было от-
крыто.

     Наряду с обычными пунктами меню каждого окна:

     Close (Закрыть)

                                 - 13 -
     Move (Переместить)
     Resize (Изменить размер)
     Zoom (Распахнуть окно)

локальное меню для окна "Files" предлагает нижеперечисленные возможно-
сти выбора, причем некоторые из них соответствуют  стандартным  коман-
дам, которые могут быть введены с помощью  клавиатуры. Везде, где  это
возможно, соответствующая команда приводится справа от пункта меню.

     Directory (Каталог)

     Change
     (Изменить)
     Изменить каталоги. Эта команда НЕ изменяет каталог, который отоб-
ражен в окне. Она просто изменяет текущий каталог DOS.

     Make
     (Создать)
     Создать новый каталог.

     Remove
     (Переместить)
     Переместить указанный каталог. Если  текущий  выделенный  элемент
представляет  собой имя каталога, то это имя по умолчанию используется
как ответ (response).

     Files (Файлы)

     Attributes
     (Атрибуты)
     Это подменю позволяет Вам изменить атрибуты файла для всех  поме-
ченных  файлов. Если никакие файлы не были помечены, то операция будет
выполняться в отношении текущего  выделенного  файла.  Первые  четыре
пункта  настоящего  подменю  задают значения атрибутов файлов, которые
должны быть установлены по Вашему желанию:

     Archive (архивный),

                                 - 14 -
     Hidden (скрытый),
     Read-only (только читаемый),
     System-specify (задаваемый системой).

     После того, как Вы установили эти атрибуты в соответствии с Ваши-
ми желаниями, выберите пункт меню "Go" ("Выполнить"),  чтобы  операция
установки атрибутов файлов была выполнена.

     Browse                             <AltB>
     (Просматривать)
     Загрузить выделенный файл в окно  "Browser"  ("Программа просмот-
ра").

     Copy                               <CtrlK><C>
     (Копировать)
     Скопировать помеченные файлы.

     Delete                             <CtrlK><Y>
     (Удалить)
     Удалить помеченные файлы/каталоги.

     Edit                               <AltE>
     (Редактировать)
     Загрузить  выделенный файл  в окно "Editor" ("Редактор").

     Move                               <CtrlK><V>
     (Переместить)
     Переместить помеченные файлы.

     Rename                             <CtrlK><N>
     (Переименовать)
     Переименовать выделенные файлы.

     Options (Опции)

     Confirm
     (Подтвердить)

                                 - 15 -
     Если эта  опция включена ("Yes", т.е."Да"), как это предусмотрено
по умолчанию, система попросит Вас подтверждать все относящиеся к фай-
лам операции (скопировать, удалить, переместить и т.д.). Когда  у  Вас
запрашивают подтверждение,  то Вы можете ответить "Yes" ("Да") (выпол-
нить операцию), "No" ("Нет") (не выполнять операцию), "Quit" ("Выйти")
(прервать выполнение операции) или "All" ("Все") ( выполнить  операцию
со всеми помеченными файлами без запросов).

     Format                             <Space>
     (Форматировать)
     Переключить режим  работы  от  режима  "Name  mode" (режим вывода
имен) к режиму "All mode" (общий режим) и обратно.

     Sort
     (Сортировать)
     Изменить порядок, в котором должны быть отсортированы имена  фай-
лов/каталогов.

     Browser (Программа просмотра)

     Подпрограмма Browser программы DESKPOP основана на  использовании
объекта Browser ("Программа просмотра"), который реализуется с помощью
модуля  OPBROWSE.  Подробные  сведения  о  том, как работает программа
просмотра файлов, приведена в документации, описывающей этот модуль.

     Когда окно "Browser" ("Программа просмотра") станет активным, ли-
нейка состояния будет выглядеть приблизительно следующим образом:

<F3> New file <F9> Menu <AltH> Hex/Ascii <Esc> Close | Line 1331 Col 1
     (Новый       (Меню)      (Шестнадца-      (Зак-  (Стро-    (Ко-
      файл)                    тиричный/        рыть)  ка)       лон-
                               код ASCII)                        ка)

     Числа, стоящие  в  правой части линейки, показывают номер строки,
находящейся в верхней части окна, и номер колонки, в которой  располо-
жен  символ,  отображенный  у  левого  края  окна.  Когда подпрограмма
Browser осуществляет чтение с диска или поиск, на месте этих цифр  бу-

                                 - 16 -
дет выведено сообщение "Working..." ("Рабочий...").

     Наряду с обычными пунктами меню каждого окна:

     Close (Закрыть)
     Move (Переместить)
     Resize (Изменить размер)
     Zoom (Распахнуть окно)

локальное меню для окна "Browser" предлагает нижеперечисленные возмож-
ности выбора, причем некоторые из них соответствуют стандартным коман-
дам, которые  могут быть  введены с помощью клавиатуры. Везде, где это
возможно, соответствующая команда приводится справа от пункта меню.

     Block (Блок)

     Hidden                             <CtrlK><H>
     (Скрытый)
     Переключить видимость отображения помеченных блоков (от  скрытого
изображения к видимому и обратно).

     Print                              <CtrlK><P>
     (Печатать)
     Распечатать текущий помеченный блок.

     Write                              <CtrlK><W>
     (Записать)
     Записать текущий помеченный блок в файл.

     Options (Опции)

     Expand Tabs                        <CtrlQ><T>
     (Расширить границы табуляции)
     Включить или выключить режим расширения колонок при установке по-
зиций  табулятора (используется только для кода ASCII). Если эта опция
используется, то  расстояния при табуляции расширяются до 8 символов в
колонке.

                                 - 17 -

     High bits                          <CtrlQ><H>
     (Высшие биты)
     Включить или отключить режим отбрасывания высоких битов.

     Mode                               <CtrlH><AltH>
     (Режим)
     Переключить режим использования кода ASCII на режим использования
шестнадцатиричного кода и обратно.

     Search (Поиск)

     Again                              <CtrlL>
     (Cнова)
     Повторить последнюю  операцию поиска строки ("find").

     Find                               <CtrlQ><F>
     (Найти)
     Провести поиск любой строки длиной до 30 символов.

     Options (Опции)
     Приведенные здесь пункты подменю позволяют Вам изменить принимае-
мые по умолчанию значения для позиций меню.

         Global
         (Глобально)
         Следует ли проводить поиск глобально (по всему объему)?

         Ignore case
         (Игнорировать регистр)
         Следует ли игнорировать при поиске регистры?

         Reverse
         (Реверсировать)
         Следует ли проводить поиск в обратном направлении?

     Text markers (Текстовые маркеры)

                                 - 18 -

     Jump                               <CtrlQ><0>..<CtrlQ><3>
     (Перепрыгнуть)
     Перейти к  следующему маркеру с номером от 0 до 3. Система выдаст
Вам запрос о том, на какой маркер нужно перейти.

     Set                                <CtrlK><0>..<CtrlK><3>
     (Установить)
     Установить текстовый  маркер  с номером от 0 до 3. Система выдаст
Вам запрос о том, какой маркер установить.

     Calculator (Калькулятор)

     Подпрограмма Calculator в программе DESKPOP разработана специаль-
но  для программистов. Она может работать в любом из 5 различных режи-
мов - 2 режима для осуществления вычислительных операций над числами с
плавающей точкой,  3 режима для операций вычислений над целыми числами
- и способна выполнять 11 различных арифметических и логических опера-
ций. Целочисленные вычисления производятся с использованием целых  чи-
сел  типа  "длинное целое" ("long integer"), длина которых находится в
диапазоне от -2.147.483.648 ($80000000) до 2.147.483.647  ($7FFFFFFF).
Операции  вычислений  над  числами с плавающей точкой осуществляются с
использованием действительных  чисел  в  двоично-десятичном  коде  BCD
("Binary Coded Decimal", т.е. "двоично-десятичный код") с 18 разрядами
точности и в диапазоне значений от 1E-63 до 1E+63.

     Окно "Calculator" ("Калькулятор") выглядит приблизительно следую-
щим образом:


 ___ 1 _________________ Calculator ___________________________________
│                       (Калькулятор)                                  │
│                                                    1775              │
│                                                    59.6 *            │
│                                                  105790 -            │
│--- Float------------------------------------------ Saved-------------│
│ (Числа с плавающей                              (Сохранено)          │

                                 - 19 -
│   точкой)                                                            │
│                                                     1775             │
│--- Commands----------------------------------------------------------│
│   (Команды)                                                          │
│                                                                      │
│   Clear     Entry     Binary    Decimal      Hex      Float     exP  │
│(Очистить)  (Ввести)  (Двоич-   (Десятич- (Шестнадца- (Плава- (Степен-│
│                       ный)      тичный)   тиричный)   ющий)    ной)  │
│                                                                      │
│   Save   Insert    And   Mod   Not   Or      Xor       shL    shR    │
│(Сохра-  (Вставить) (И)  (Мода) (НЕ) (ИЛИ) (ИЛИ исклю- (Сдвиг (Сдвиг  │
│ нить)                                       чающее)    влево) вправо)│
│______________________________________________________________________│


     Три верхние  строки  окна  калькулятора используются для вводимых
чисел и отображения результатов  вычисления.  Вторая  из  первых  двух
строк  всегда  используется  для вводимых чисел, в то время как третья
строка предназначена для того, чтобы выводить на экран получаемые  ре-
зультаты.  Для  того, чтобы произвести вычисления, выполните следующую
последовательность действий:

     1. Введите первое число.
     2. Нажмите на соответствующую клавишу для указания арифметической
или логической операции (+, -, *, /, A, M, N, O, X, L или R).
     (Прим. перев.: значение каждой их этих клавиш поясняется  ниже  в
разделе "Арифметические операции".)
     3. Введите второе число.
     4. Нажмите  на клавишу <Enter> или <=> для того, чтобы вывести на
экран результат.
        Либо:
        Нажмите на одну из клавиш, перечисленных в пункте 2, для того,
чтобы выполнить операции вычисления и используйте полученный результат
в качестве значения первого операнда для второго вычисления.

     Когда Вы получили результат, то Вы можете либо начать  новое  вы-
числение,  вводя очередное число, либо нажать на одну из клавиш, пере-

                                 - 20 -
численных в пункте 2, с тем чтобы использовать полученный результат  в
качестве  значения  первого  операнда для второго вычисления. Отметим,
что не обязательно нажимать на клавишу <NumLock> перед тем,  как  вво-
дить  числа  на цифровой подклавиатуре. Когда окно "Calculator" стано-
вится активным, оно автоматически включает режим "NumLock", а при  вы-
ходе из этого окна предыдущее состояние клавиши "NumLock" автоматичес-
ки восстанавливается.

     Две строки,  находящиеся в нижней части внутреннего окна, показы-
вают меню допустимых команд. Непосредственно над ними расположено зна-
чение, которое хранится в активном "буфере хранения" ("Save  Buffer").
Имеются два таких буфера: один - для хранения чисел с плавающей точкой
и другой - для целых чисел.

     В окне  "Calculator" возможно использование команд, перечисленных
ниже:

     Основные команды окна "Calculator"

     <C>
     Clear all (Очистить весь экран).
     Очистить полностью окно вычислений.

     <E>
     Clear Entry (Очистить ввод).
     Удалить только что введенное текущее число (во второй строке окна
вычислений).

     <S>
     Save (Сохранить).
     Сохранить введенное текущее число в  активном  "буфере  хранения"
("Safe Buffer").

     <I>
     Insert (Вставить).
     Ввести в  текущий ввод число, находящееся в активном "буфере хра-
нения".

                                 - 21 -

     Mode Commands (Режимы использования команд)

     <B>
     Binary (Двоичный).
     Переключить режим вычисления на обработку двоичных чисел (целых).

     <D>
     Decimal (Десятичный).
     Переключить режим вычисления на обработку десятичных чисел (целых).

     <H>
     Hexadecimal (Шестнадцатиричный).
     Переключить режим вычисления на обработку шестнадцатиричных чисел
(целых).

     <F>
     Float (Числа с плавающей точкой).
     Переключить режим  вычисления на обработку действительных чисел с
плавающей точкой с использованием обычной формы записи. Получаемые ре-
зультаты  выводятся  на экран без показателя степени всегда, когда это
только возможно - например, число выводится в формате записи "0.0057",
а не в формате записи "5.7E-03".

     <P>
     exPonential (показательный).
     Переключить режим вычисления на обработку действительных чисел  с
плавающей  точкой  с использованием степенной формы записи. Получаемые
результаты всегда выводятся на экран с указанием показателя степени  -
например,  число  выводится  в формате записи "5.7E-03" а не в формате
записи "0.0057".

     Arithmetic Operators (Арифметические операторы)

     <+>
     Сложить значения "Операнд_1"  и "Операнд_2".


                                 - 22 -
     <->
     Вычесть значение "Операнд_2"  из значения "Операнд_1" .

     <*>
     Перемножить значения "Операнд_1" и "Операнд_2" .

     </>
     Разделить значение "Операнд_1" на значение "Операнд_2" .

     <M>
     Mod (мода).
     Получить остаток  от  деления  значения  "Операнд_1"  на значение
"Операнд_2".

     Логические операторы (только для режимов обработки целых чисел):

     <A>
     And (И).
     Выполнить побитовое сравнение "И" ("AND") значений "Операнд_1"  и
"Операнд_2".

     <N>
     Not (НЕ).
     Выполнить побитовое отрицание текущего введенного значения.

     <O>
     (Прим. перев.: латинская прописная буква O, но не ноль.)
     Or (ИЛИ).
     Выполнить побитовое сравнение "ИЛИ" ("OR") значений "Операнд_1" и
"Операнд_2".

     <X>
     Xor (исключающее ИЛИ).
     Выполнить побитовое исключающее сравнение "ИЛИ" ("eXclusive  OR")
значений "Операнд_1" и "Операнд_2".

     <L>

                                 - 23 -
     shL (от "shift Left" - сдвиг влево).
     Сдвинуть значение "Операнд_1" влево на количество битов, заданных
с  помощью "Операнд_2". Если значение "Операнд_2" больше 31 или меньше
0, то результатом операции является 0.

     <R>
     shR (от "shift Right" - сдвиг вправо).
     Сдвинуть значение "Операнд_1" вправо на количество битов,  задан-
ных  с  помощью  "Операнд_2".  Если значение "Операнд_2" больше 31 или
меньше 0, то результатом операции является 0.

     Other commands (Другие команды)

     <BkSp>
     Удалить предыдущий символ.

     <CtrlA>..<CtrlF>
     В том случае, когда применяется шестнадцатиричный режим, эти кла-
виши могут быть использованы для ввода значений соответственно от "$A"
до "$F".

     <Esc>, <CtrlBreak>, <ClickRight>
     Закрыть окно.

     <F1>, <ClickBoth>
     Запросить оперативную информационную помощь.

     <AltI>
     Ввести число в файл, находящийся  в  окне  "Editor"  ("Редактор")
(это окно должно быть открыто). Если вычисление было только что выпол-
нено,  то  вводится  результат вычисления, в противном случае вводится
текущее введенное число ("Операнд_2"). Если текущим режимом вычислений
является обработка чисел с плавающей точкой с  использованием  обычной
или  степенной формы записи, то Вы можете получить число в форме конс-
танты типа BCD (двоично-десятичный код). Например, строка,  сгенериро-
ванная    для    числа    1.2345,    будет    представлена    в   виде
"($40,$00,$00,$00,$00,$00,$00,$50,$34,$12)".

                                 - 24 -

     Editor (Редактор)

     Подпрограмма Editor (Редактор) программы DESKPOP основана на  ис-
пользовании  объекта TextEditor ("Текстовый_редактор"), который реали-
зуется с помощью модуля OPEDITOR. Подробные сведения о том, как  рабо-
тает TextEditor,  приведены   в   документации,   описывающей   модуль
OPEDITOR.

     Когда окно "Editor" ("Редактор") станет активным, линейка состоя-
ния будет выглядеть приблизительно следующим образом:

<F2> Save file <F3> New file <F9> Menu <Esc> Close   Line 1340  Col 1
    (Сохранить      (Новый       (Меню)     (За-     (Стро-    (Колон-
      файл)          файл)                  крыть)    ка)       ка)

     Числа в  правой  части окна показывают текущее положение курсора.
Когда выполняется операция поиска, счетчик строк будет все  время  об-
новлять свое значение, чтобы проинформировать Вас о том, насколько да-
леко продвинулся поиск.

     Помимо стандартных команд редактирования окно "Editor" также пре-
доставляет Вам возможность использовать клавишу <Esc> или правую кноп-
ку "мыши" (<ClickRight>) для того, чтобы закрыть окно  редактирования.
Если  в  редактируемый  файл были внесены изменения, то перед тем, как
закрыть окно, система выдаст Вам запрос, желаете ли Вы сохранить  этот
файл. Если  в  ответ на этот запрос Вы нажмете на клавишу <Esc> или на
правую кнопку "мыши" (<ClickRight>), то команда будет отменена.

     Наряду с обычными пунктами меню каждого окна:

     Close (Закрыть)
     Move (Переместить)
     Resize (Изменить размер)
     Zoom (Распахнуть окно)

локальное меню для окна "Editor" предлагает нижеперечисленные  возмож-

                                 - 25 -
ности выбора, причем некоторые из них соответствуют стандартным коман-
дам, которые могут  быть введены с помощью  клавиатуры. Везде, где это
возможно, соответствующая команда приводится справа от пункта меню.

     Block (Блок)

     Change case
     (Сменить регистр)
     Эти пункты меню изменяют регистр для целого блока. В том  случае,
если  никакой  блок  не был помечен или если блок является скрытым, то
будет изменен регистр только для того символа, на который был позицио-
нирован курсор.

        Lower                           <CtrlO><V>
        (Нижний)
        Преобразовать весь блок к нижнему регистру.

        Toggle                          <CtrlO><O>
        (Переключить)
        Переключить регистры всех символов в блоке на противоположные.


        Upper                           <CtrlO><U>
        (Верхний)
        Преобразовать весь блок к верхнему регистру.

        Hidden                          <CtrlK><H>
        (Скрытый)
        Переключить видимость отображения помеченных блоков (от  види-
        мого к скрытому и наоборот).

     Indentation (Формирование отступов в начале абзаца)

        Indent                          <CtrlK><I>
        (Отступ вправо)
        Сформировать в  помеченном  блоке отступ вправо на "N" колонок
        (уровень отступа).

                                 - 26 -

        Unindent                        <CtrlK><U>
        (Выступ влево)
        Сформировать в помеченном блоке выступ влево  на  "N"  колонок
        (уровень отступа).

        Level                           <CtrlO><B>
        (Уровень)
        Установить уровень отступа (по умолчанию принимается  значение
        2).

     Print                              <CtrlK><P>
     (Печатать)
     Распечатать текущий помеченный блок.

     Read                               <CtrlK><R>
     (Читать)
     Прочитать файл в ту позицию окна "Editor", которая указана  кур-
сором.

     Write                              <CtrlK><W>
     (Записать)
     Записать текущий помеченный блок в файл.

     File (Файл)

     New                                <F3>
     (Новый)
     Загрузить в окно "Editor" новый файл.

     Save                               <F2>, <CtrlK><S>
     (Сохранить)
     Сохранить редактируемый файл.

     Write as                           <CtrlK><N>
     (Записать под именем)
     Сохранить редактируемый файл под новым именем.

                                 - 27 -

     Опции

     Autoindent                         <CtrlO><I>
     (Автоматический отступ)
     Переключить режим на автоматическое формирование отступа и обрат-
но.

     Backups
     (Резервные копии)
     Если эта опция задействована, то программа Editor будет создавать
резервную копию (с расширением ".BAK") предыдущего варианта редактиру-
емого файла с тем, как сохранить уже существующий файл.

     Delete joins
     (Соединение с помощью клавиши удаления)
     Если эта опция задействована, то при позиционировании  курсора  в
конце строки нажатие на клавишу <Del> приведет к присоединению следую-
щей строки к концу текущей строки.

     Margin                             <CtrlO><R>
     (Край)
     Установить правый край.

     Partial files
     (Файлы, разделенные на части)
     Следует ли  загружать файлы частями? Если эта опция задействована
и если новый файл является чересчур большим, чтобы его было можно про-
честь полностью, программа Editor считает такую  часть  текста,  какую
возможно  разместить. Установка этой опции не влияет на команду чтения
блока.

     Smart tabs                         <CtrlO><F>
     (Интеллектуальная установка  расстояний между позициями табулято-
ра)
     Включить или отключить режим интеллектуальной установки  расстоя-
ний между позициями табулятора. (Прим. перев.: в отличие от режима ус-

                                 - 28 -
тановки фиксированных расстояний, т.е. одинаковых для всех колонок.)


     Tab size                           <CtrlO><T>
     (Размеры табуляции)
     Установить расстояние  между позициями табулятора (только для ре-
жима фиксированных, т.е. одинаковых, расстояний).

     Word wrap                          <CtrlO><W>
     ("Сворачивание" слов)
     Включить или отключить режим "сворачивания" слов.

     Search (Поиск)

     Again                              <CtrlL>
     (Снова)
     Повторить последнюю   выполненную   операцию   "найти"/"заменить"
("find"/"replace").

     Find                               <CtrlQ><F>
     (Найти)
     Провести поиск любой строки длиной вплоть до 30 символов.

     Options (Опции)
     Эти пункты меню позволяют Вам изменять принятые по умолчанию  оп-
ции в командах "найти"/"заменить" ("find"/"replace").

        Block only
        (Только блок)
        Следует ли проводить поиск только в пределах помеченного блока?

        Confirm
        (Подтвердить)
        Следует ли подтверждать производимые замены?

        Global
        (Глобально)

                                 - 29 -
        Следует ли проводить глобальный поиск?

        Ignore case
        (Игнорировать регистр)
        Следует ли при проведении поиска игнорировать регистр?

        Reverse
        (Обратный)
        Следует ли проводить поиск в обратном направлении?

     Replace                            <CtrlQ><A>
     (Заменить)
     Заменить строку длиной вплоть до 30 символов на другую строку.

     Text Markers (Текстовые маркеры)

     Hidden                             <CtrlK><M>
     (Скрытый)
     Переключать видимость  текстовых  маркеров  (от  режима  скрытого
изображения к видимому и обратно).

     Jump                               <CtrlQ><0>..<CtrlQ><3>
     (Прыгать)
     Перейти к текстовому маркеру с номером от 0 до 3. Система  выдаст
Вам запрос, к какому маркеру нужно перейти.

     Set                                <CtrlK><0>..<CtrlK><3>
     (Установить)
     Установить текстовые маркеры с номерами от 0 до 3. Система выдаст
Вам запрос, какой именно маркер требуется установить.

     Calendar (Календарь)

     Подпрограмма Calendar программы DESKPOP основана на использовании
объекта  PickList ("Список_подбора"), который реализуется с помощью
модуля OPPICK. Подробные сведения о том, как работает PickList, приве-
дены в документации, описывающей модуль OPPICK.

                                 - 30 -

     Помимо стандартных команд подбора списков программа Calendar пре-
доставляет возможность использования также следующих команд:

     <Home>
     Установить курсор на начало месяца.

     <End>
     Установить курсор на конец месяца.

     <PgDn>, <CtrlC>
     Отобразить на экране следующий месяц.

     <PgUp>, <CtrlR>
     Отобразить на экране предыдущий месяц.

     <CtrlPgDn>, <CtrlQ><C>
     Отобразить на экране следующий год.

     <CtrlPgUp>, <CtrlQ><R>
     Отобразить на экране  предыдущий год.

     <CtrlHome>
     Отобразить на экране текущий месяц; поместить курсор на дату  те-
кущего дня.

     <Esc>, <ClickRight>
     Закрыть окно.

     Необходимо отметить, что окно "Calendar" имеет постоянный размер.
Его можно передвинуть, но нельзя распахнуть во весь экран или изменять
его размер.

     Phone Book (Tелефонная книга)

     Подобно подпрограмме  Calendar   подпрограмма   Phone   программы
DESKPOP основано на использовании объекта PickList ("Список_подбора"),

                                 - 31 -
который реализуется с помощью модуля OPPICK. Подробные сведения о том,
как  работает  PickList,  приведены в документации, описывающей модуль
OPPICK.

     Когда Вы открываете окно "Phone" ("Телефон") в первый раз, систе-
ма спросит у Вас имя телефонной книги, причем этот файл  по  умолчанию
должен  иметь расширение ".PB". Если такой файл не существует, система
спросит у Вас, не желаете ли Вы его создать. В  том  случае,  если  Вы
этого захотите, то Вы сможете попросить открыть предоставляемый систе-
мой  в  качестве примера файл телефонной книги, PHONE.PB. Предположим,
что Вы так и поступили, тогда внутренняя область  окна  "Phone"  будет
выглядеть примерно следующим образом:

     Index        Name                           Phone number
    (Индекс)   (Название)                      (Телефонный номер)
   ______________________________________________________________

     Bor      |  Borland                        | 1-408-438-5300
     TPS 1    |  TurboPower Software            | 1-408-438-8608
     TPS 2    |  TurboPower Software            | 1-800-333-4160

     Самый верхний  ряд  состоит из заголовков колонок, в то время как
второй ряд представляет собой просто отделяющую строку. Остальные ряды
показывают выбранные порции каждого входа в телефонную книгу.

     Колонка "Index"  ("Индекс")  отображает аббревиатуру, связанную с
данной строкой телефонной книги. Чтобы быстро попасть на  эту  строку,
Вы  можете  ввести  символы, из которых составляются аббревиатуры: при
нажатии на клавишу <B> Вы попадете на первую  строку,  индекс  которой
начинается с "B"; затем при нажатии на клавишу <O> Вы попадете на пер-
вую  строку, индекс которой начинается с "BO" и т.д. Строки телефонной
книги всегда сортируются на основе поля Index.

     Истинное содержимое второй колонки зависит от того, что было вве-
дено в телефонную книгу. Если вводились и имя, и фамилия абонента,  то
оба  этих  элемента  будут  отображаться  в  этой  колонке  в  формате
"LastName, FirstName" ("Имя, фамилия"). Если был введен только один из

                                 - 32 -
этих двух элементов, то именно он и будет здесь отображен. Если же  не
был  введен ни один из этих атрибутов, а указано название компании, то
в этом окне будет показано это  название  компании.  Если  в  вводимой
строке  телефонной  книги все эти три поля отсутствуют, то эта колонка
окна будет пустой. Полное содержание всех элементов строки  телефонной
книги приводится ниже.

     Третья колонка  показывает  соответствующий  номер телефона. Если
для набора телефонных номеров Вы предполагаете использовать  собствен-
ный  модем,  то вводимый Вами в колонку окна номер телефона должен со-
держать все цифры, необходимые для того, чтобы  обеспечить  его  набор
(включая префикс дальней связи и код области/страны). Отметим, что от-
дельные  цифры  могут  быть  отделены  друг  от  друга  знаками дефиса
("1-234-555-1212"), пробелами ("1 234 555 1212") и /или круглыми скоб-
ками ("(123) 555-1212"); все эти символы при наборе номера модемом бу-
дут игнорироваться.

     Помимо стандартных команд подбора списков окно "Phone" также поз-
воляет использовать следующие команды:

     <Enter>
     Отредактировать выделенную строку телефонной книги (инструкции по
редактированию приводятся ниже). Если телефонная книга еще не содержит
никаких записей, то эта команда может быть использована для ввода  но-
вой записи.

     <ClickLeft>
     Выбрать запись, подлежащую редактированию, с помощью "мыши".

     <CtrlN>
     Ввести в телефонную книгу новую запись.

     <CtrlY>
     Удалить выделенную запись.

     <F3>
     Загрузить телефонную книгу.

                                 - 33 -

     <AltD>
     Набрать с помощью модема номер телефона, находящийся в выделенной
записи. Когда Вы услышите сигнал звукогенератора Вашего модема, свиде-
тельствующий о том, что телефон  на  другом  конце  свободен,  снимите
трубку телефона и нажмите на любую клавишу для того, чтобы "подвесить"
("hang up")  модем. Если же телефон абонента занят, то нажмите на кла-
вишу, не снимая трубку телефона. Прежде чем нажимать на клавишу, необ-
ходимо убедиться в том, что модем уже завершил набор телефонного номе-
ра. Для того, чтобы данная команда работала,  Ваш  модем  ДОЛЖЕН  быть
совместимым с системой Hayes. Если у Вас возникают затруднения при ис-
пользовании  этой  команды,  возможно,  Вам  потребуется  использовать
DPINST с тем, чтобы изменить значение одного из  параметров,  влияющих
на  взаимодействие  DESKPOP  с модемом (скорость передачи информации в
бодах, порт  коммуникации, строка набора, строка "подвешивания"). Про-
вести такую корректировку параметров будет абсолютно необходимо в  том
случае,  если  Вы используете модем со скоростью передачи информации в
300 бод или если в Вашем распоряжении нет сенсорного тонового телефона
("touch tone phone").

     <AltH>
     "Подвесить" модем. Данная команда необходима только в том случае,
если  Вы ввели команду для набора номера телефона и случайно нажали на
какую-либо клавишу до того, как модем завершил набор номера.

     <Esc>, <ClickRight>
     Закрыть окно.

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

 ___________________ Phonebopok Editor ____________________________
│               (Редактор телефонной книги)                        │
│  Index (Индекс)        _______                                   │
│                                                                  │
│  Phone (Номер телефона)______________________                    │

                                 - 34 -
│                                                                  │
│  First (Имя)           ______________________                    │
│  Last  (Фамилия)       ______________________                    │
│  Company (Компания)    ________________________________          │
│  Address (Адрес)       ________________________________          │
│  City (Город)          ________________________________          │
│  State (Штат)          ______________________                    │
│  Zip code ("zip"-код)  _______________                           │
│                                                                  │
│  Notes  (Примечания)   _________________________________________ │
│                        _________________________________________ │
│                        _________________________________________ │
│                        _________________________________________ │
│__________________________________________________________________│


     Это окно представляет собой экран для ввода записей, который соз-
дается с помощью модуля OPENTRY. (Подробные сведения о том, как  рабо-
тает EntryScreen ("Ввод_с_экрана") приведены в документации, описы-
вающей модуль OPENTRY.)

     Поля, имеющиеся на экране ввода записей, вполне понятны  без  ка-
ких-либо  пояснений, за исключением первого и последнего полей. Назна-
чение поля "Index" было уже описано выше. Вы имеете  возможность  вво-
дить  в  это поле все, что хотите, однако это поле не должно быть пус-
тым. (Обязательно должно быть заполнено и поле "Phone".) Последнее по-
ле, "Notes" ("Примечания"), может быть использовано  для  ввода  самой
разнообразной  информации:  сведений о датах рождения, годовщинах, до-
полнительных номерах телефонов и т.д.

     Quick Reference Chart (Таблица  быстрых  ссылок)

     Подпрограмма Quick Reference Chart (Таблица быстрых ссылок) прог-
раммы DESKPOP развивает дальше идею таблицы ASCII  программы  SideKick
на  несколько шагов вперед. Она выводит на экран серию таблиц трансля-
ции для значений, лежащих в диапазоне от 0 до 255. Эти таблицы показы-
вают:

                                 - 35 -

     - значение, представленное в  десятичной,  шестнадцатиричной  или
       двоичной форме записи;
     - соответствующий символ в коде ASCII;
     - соответствующий код ASCII - например, 7 = "BEL";
     - соответствующие коды клавиш BIOS - например, 16 = <CtrlP> или
       <AltQ> (расширенный код сканирования) - причем в перечень вклю-
       чены и те клавиши, которые разрешено использовать только тогда,
       когда используется  модуль  OPENHKBD  (эти клавиши отображаются
       повышенной интенсивностью или белым цветом), а также псевдоска-
       нирующие коды, возвращаемые определенными подпрограммами в  мо-
       дуль OPMOUSE (эти коды отображаются  повышенной  интенсивностью
       или желтым цветом);
     - соответствующий код сканирования аппаратного устройства;
     - соответствующий атрибут отображения как для монохромного, так и
       для цветного адаптеров дисплеев.

     В окне  "Quick Reference Chart" ("Таблица быстрых ссылок") разре-
шается использовать следующие команды:

     <Up>, <CtrlE>, <CtrlW>
     Прокрутить окно вверх.

     <Down>, <CtrlX>, <CtrlZ>
     Прокрутить окно вниз.

     <Left>, <CtrlS>
     Прокрутить окно влево на 1 колонку.

     <Right>, <CtrlD>
     Прокрутить окно вправо на 1 колонку.

     <CtrlLeft>, <CtrlA>
     Прокрутить окно влево на 10 колонок.

     <CtrlRight>, <CtrlF>
     Прокрутить окно вправо на 10 колонок.

                                 - 36 -

     <PgUp>, <CtrlR>
     Прокрутить окно на одну страницу вверх.

     <PgDn>, <CtrlC>
     Прокрутить окно на одну страницу вниз.

     <Home>, <CtrlQ><S>
     Прокрутить окно к левому краю таблицы.

     <End>, <CtrlQ><D>
     Прокрутить окно к правому краю таблицы.

     <CtrlPgDn>, <CtrlQ><C>
     Прокрутить окно к концу таблицы.

     <CtrlPgUp>, <CtrlQ><R>
     Прокрутить окно к началу таблицы.

     <Esc>, <CtrlBreak>, <ClickRight>
     Закрыть окно.

     <F1>, <ClickBoth>
     Запросить оперативную информационную помощь.

     <CtrlB>
     Переключить атрибут  мигания.  Обычно любой атрибут отбражения со
значением более 127 (01111111 в двоичном представлении) будет вызывать
мигание текста. Т.к. мигающий текст может вызывать  сильное  раздраже-
ние,  если  его  использовать  в  чрезмерных дозах, подпрограмма Quick
Reference Chart обеспечивает подавление мигания во всех своих цветовых
вариантах, когда  атрибут мигания разрешается использовать ; для того,
чтобы указать  атрибуты, вызывающие мигание, она вместо этого выделяет
названия основного и фонового цветов. Если атрибут мигания отменен, то
она отображает на экране цветовые образцы нормально. Отметим, что  ко-
манда <CtrlB> перепрограммирует контроллер CRT, и DESKPOP не сохраняет
его предыдущего состояния, когда Вы выходите из программы.

                                 - 37 -

     Help (Оперативная информационная помощь)

     Окно "Help" ("Помощь") может быть активизировано в  любой  момент
нажатием  на  клавишу  <F1>  или  на  обе  кнопки  "мыши" одновременно
("<ClickBoth>"). Средство оперативной информационной помощи не являет-
ся, как можно было бы ожидать, контекстно-зависимой системой  подсказ-
ки,  которая создается с помощью OPHELP. Скорее это программа поиска в
файле (во многом напоминающая окно "Browse" ("Просмотр")), которая ав-
томатически осуществляет поиск и  загрузку  текстового  файла  в  коде
ASCII,  имеющего  имя  DESKPOP.HLP.  После этого Вы имеете возможность
прокручивать текст в файле оперативной информационной помощи точно так
же, как  если бы Вы просматривали файл с помощью окна "Browse". (Прим.
перев.: выше это окно называлось "Browser".)

     Программа DESKPOP  проводит поиск своего файла оперативной инфор-
мационной помощи сначала в текущем каталоге, затем в каталоге, из  ко-
торого  она была загружена (под управлением системы DOS версии 3.х или
выше) и, наконец, в каталогах, имена которых указаны в DOS.PATH.  Если
ни  по одному из этих адресов она не может найти этот фойл, то Вы уви-
дите на экране сообщение, показывающее, что файл оперативной  информа-
ционной помощи не найден.

     Файл DESKPOP.HLP содержит просто список всех команд, которые раз-
решается  использовать  в каждом из окон, и перечень клавиш для вызова
этих команд. Если Вы изменяете назначения этих клавиш с помощью  прог-
раммы  DPINST,  то  эта  программа  будет  создавать новую копию файла
DESKPOP.HLP, отражающую внесенные Вами изменения.

     В отличие  от большинства других окон, которые можно размещать на
экране "настольного средства", окно "Help" не может быть распахнуто во
весь экран или перемещено по экрану, и его размеры не могут быть изме-
нены. Кроме того, Вы не можете переключиться на другое окно в то  вре-
мя,  пока  окно  "Help"  остается открытым. После того, как Вы изучите
файл оперативной информационной помощи, нажмите на клавишу  <Esc>  или
на  правую  кнопку  "мыши" (<ClickRight>), чтобы закрыть окно "Help" и
вернуться к той работе, которую Вы до этого выполняли. Если же Вы  хо-

                                 - 38 -
тите  иметь возможность держать окно оперативной информационной помощи
открытым во время Вашей работы с другими окнами, Вы  можете  загрузить
его в окна "Browser" ("Программа  просмотра")  или  "Editor"  ("Редак-
тор").

     2. Программа DPINST

     Программа DPINST  предоставляет Вам возможность настраивать прог-
рамму DESKPOP таким образом, чтобы она  соответствовала  Вашим  личным
вкусам в отношении таких моментов, как "горячие клавиши", цвета и кла-
виши  назначения.  Перед  тем, как запустить эту программу, необходимо
убедиться, что оба файла DESKPOP.EXE и DESKPOP.HLP находятся в текущем
каталоге. Затем введите в строку запроса системы DOS команду:

     DPINST

     Программе DPINST  потребуется всего несколько мгновений для того,
чтобы разместить в файле DESKPOP.EXEвсе сведения о конфигурации . Ког-
да она завершит эту работу, Вы увидите на экране следующее меню:
 ______________________________________________
│   Browser (Программа поиска)                 │
│   Calculator (Калькулятор)                   │
│   Calendar (Календарь)                       │
│   Editor (Редактор)                          │
│   File manager (Программа обработки файлов)  │
│   Menus (Перечни меню)                       │
│   Quick reference (Быстрая ссылка)           │
│   Phone book (Телефонная книга)              │
│   Hotkeys ("Горячие клавиши")                │
│______________________________________________│
│   Colors (Цвета)                             │
│   Options (Опции)                            │
│______________________________________________│
│   Quit (Выход)                               │
│______________________________________________│

     Пункты меню, находящиеся в самой верхней его части, позволяют Вам

                                 - 39 -
осуществлять настройку назначения клавиш для различных частей програм-
мы. Пункт меню "Colors" ("Цвета") предоставляет Вам возможность  изме-
нять  атрибуты  отображения,  которые используются программой DESKPOP.
Пункт меню "Options" ("Опции") позволяет изменять  значения  различных
параметров, влияющих на поведение программы DESKPOP.

     Пункт меню  "Quit"  ("Выход")  возвращает  Вас в командную строку
запроса системы DOS. Если Вы ввели какие-либо изменения, то  программа
DPINST сначала выдаст запрос, желаете ли Вы сохранить эти изменения на
диске. Нажмите на клавишу "Y" ("Да") для того, чтобы сохранить измене-
ния  и выйти из программы DPINST, на клавишу "N" ("Нет"), чтобы проиг-
норировать сделанные изменения и выйти из программы,  или  на  клавишу
<Esc>,  чтобы отменить команду выхода из программы. В том случае, если
Вы ответили "Yes" ("Да"), то программа DPINST обновит данные по конфи-
гурации в программе DESKPOP и запишет новый файл DESKPOP.HLP,  который
будет отражать все изменения, внесенные Вами в назначения клавиш.

      Следует отметить, что если программа DESKPOP уже загружена к то-
му  моменту,  когда  Вы  запустили программу DPINST, Вам необходимо ее
разгрузить и затем загрузить повторно, чтобы внесенные Вами  изменения
начали действовать.

     Изменение назначения клавиш

     Как уже  было  сказано, все пункты меню, находящиеся в первой его
части, предназначены для настройки назначения клавиш. Т.к. для их  из-
менения  во  всех  случаях  используется одна и та же процедура, то мы
сосредоточим основное внимание на самой процедуре вообще, а не на опи-
сании каждого отдельного случая индивидуально.

     Если, например, Вы выбрали позицию "Menus" ("Перечни  меню"),  Вы
увидите на экране следующее изображение:

____________________________ Menus _______________________________
│                         (Перечни меню)                          ^
│                                                                 #
│Cursor up                <Up>         <^E>            <^W>       #

                                 - 40 -
│Cursor down              <Down>       <^X>            <^Z>       #
│Cursor left              <Left>       <^S>                       #
│Cursor right             <Right>      <^D>                       #
│Cursor to start of line  <Home>       <^Q> <^R>                  #
│Cursor to end of line     <End>       <^Q> <^C>                  #
│_________________________________________________________________#
│Select                    <Enter>                                #
│Mouse select              <ClkLeft>                              #
│Exit menu                 <Esc>       <ClkRight>                 #
│Request help              <F1>        <ClkBoth>                  #
│_________________________________________________________________v

             Справочник-словарь  терминов окна "Menus"
                     (в порядке их появления)

Cursor up  - переместить курсор вверх
Cursor down - переместить курсор вниз
Cursor left - переместить курсор влево
Cursor right - переместить курсор вправо
Cursor to start of line - переместить курсор в начало строки
Cursor to end of line - переместить курсор в конец строки
Select - выбрать
Mouse select - выбрать пункт меню с помощью "мыши"
Exit menu - выйти из меню
Request help - запросить оперативную информационную помощь

     Первая колонка показывает имя каждой команды, в то время как сле-
дующие три колонки показывают различные последовательности клавиш, ко-
торые предназначены для вызова данной команды.

     Для того, чтобы изменить назначение клавиши  или  добавить  новое
назначение, используйте клавиши управления курсором с тем, чтобы пере-
местить  световую  полоску  на то значение, которое Вы хотели бы изме-
нить, и нажмите на клавишу <Enter>; после этого нажмите на клавишу(и),
которую(ые) Вы хотите назначить данной команде.

     Во время ввода назначения для  клавиши  разрешается  пользоваться

                                 - 41 -
следующими командами:

     <BkSp>, <CtrlBkSp>
     Удалить последнее введенное значение клавиши.

     <CtrlC>, <CtrlY>
     Очистить все назначения для клавиши.

     <CtrlR>, <CtrlQ><L>
     Восстановить предыдущее значение.

     <Enter>, <ClickLeft>
     Присвоить назначение клавише.

     <Esc>, <CtrlBreak>, <ClickRight>
     Отменить операцию.

     Если Вам необходимо ввести одну из этих клавиш в качестве состав-
ной части для назначения клавиши, то следует нажать на клавишу <Scroll
Lock>  или  на обе кнопки "мыши" одновременно (<Click Both>) для того,
чтобы переключиться от режима команд к режиму ввода символов ("literal
mode"); затем  введите  клавишу(и)  и вновь нажмите на клавишу <Scroll
Lock>, чтобы возвратиться к прежнему режиму работы.

     Для того,  чтобы  система  приняла все внесенные Вами изменения и
вышла из меню, нажмите на клавишу <Esc>. После этого программа  DPINST
выполнит операцию проверки, чтобы убедиться в том, что назначения кла-
виш  не  конфликтуют  между собой. Если выяснится, что такие конфликты
возникают, то  на  экран будет выведено сообщение об ошибке и выделены
те клавиши, которые вызывают конфликт. Программа  DPINST  не  разрешит
Вам  вернуться  в  основное  меню до тех пор, пока Вы не устраните все
конфликты между назначениями клавиш. Если Вы придете  к  решению,  что
было  бы  лучше  для Вас оставить все назначения клавиш такими, какими
они были до внесения Вами изменений, то Вы можете нажать на клавиши
<CtrlR> для того, чтобы восстановить назначения  клавиш,  принятые  по
умолчанию ("Restore" - "восстановить"), а  затем  нажмите  на  клавишу
<Esc>.

                                 - 42 -

     Изменение цветов экрана

     Если Вы выберете в основном меню  позицию  "Colors"  ("Цвета")  и
сразу  же после этого нажмете на клавишу <Enter>, то Вы увидите на эк-
ране приблизительно следующую картинку:

 ___________________    ________________ Colors _____  Color  Mono___
│                   │  │                                             ^
│                   │  │ Windows, General                            #
│  * * * * * * * *  │  │ Text                             1E  0F     #
│  * * * * * * * *  │  │ Frame                            13  07     #
│  * * * * * * * *  │  │ Header, active window            3F  70     #
│  * * * * * * * *  │  │ Header, inactive window          30  07     #
│  * * * * * * * *  │  │ Shadow                           08  70     #
│  * * * * * * * *  │  │ Scroll bar                       13  07     #
│  * * * * * * * *  │  │ Scroll bar  slider               13  0F     #
│  * * * * * * * *  │  │ Hot spots, scroll bar arrows     30  70     #
│  * * * * * * * *  │  │ Mouse cursor                     4F  70     #
│  * * * * * * * *  │  │                                             #
│  * * * * * * * *  │  │ Status line                                 #
│  * * * * * * * *  │  │ Text                             30  07     #
│  * * * * * * * *  │  │ Edit prompt                      30 07      #
│  * - * * * * * *  │  │ Edit field                       31 0F      #
│  *|*|* * * * * *  │  │                                             #
│  * - * * * * * *  │  │ Menus                                       #
│                   │  │  Frame                           30  07     #
│___________________│  │_____________________________________________v


   Справочник-словарь  терминов окна "Colors" (в порядке их появления)

Colors                        Цвета
Color                         Цветное изображение
Mono                          Монохромное изображение
Windows, General              Окна, общий цвет фона
Text                          Текст

                                 - 43 -
Frame                         Рамка
Header, active window         Заголовок, активное окно
Header, inactive window       Заголовок, неактивное окно
Shadow                        Тень
Scroll bar                    Линейка прокрутки
Scroll bar  slider            "Слайдер" ("slider") линейки прокрутки
Hot spots, scroll bar arrows "Горячие участки", стрелки  линейки  про-
                              рутки
Mouse cursor                  Курсор "мыши"

Status line                   Строка статуса
Text                          Текст
Edit prompt                   Поле запроса
Edit field                    Поле редактирования

Menus                         Перечни меню
Frame                         Рамка

     В правой  части окна содержится перечень значений различных пара-
метров атрибутов изображения. Каждый атрибут имеет два параметра, один
для режимов цветного изображения и  другой  для  режимов  монохромного
изображения.  Чтобы изменить значение конкретного параметра, Вы должны
либо поместить на него световое пятно и нажать на клавишу <Enter>, ли-
бо позиционировать на него указатель "мыши" с помощью ее левой кнопки.
В левой части окна, отображающей все цвета, из которых Вы должны  сде-
лать  выбор,  вокруг  цвета,  который в данный момент используется для
выбранного Вами параметра, появится прямоугольная рамка, как  показано
выше.  Используя клавиши управления курсором, передвиньте эту рамку на
тот цвет, который  для  Вас  предпочительнее,  и  нажмите  на  клавишу
<Enter>.  Эту  же операцию Вы можете осуществить с помощью "мыши". Для
этого просто перемещайте "мышь" по своему столу до тех пор, пока рамка
не переместится в требуемое место, и затем  нажмите  на  левую  кнопку
"мыши".

     После того,  как Вы закончите установку цветовых параметров, наж-
мите на клавишу <Esc>, и Вы вернетесь в основное меню.


                                 - 44 -
     Изменение опций

     Когда Вы выбираете из основного меню позицию "Options" ("Опции"),
то всплывает прокручивающийся экран ввода данных, который предоставля-
ет  Вам  возможность  изменить все разнообразное множество параметров.
(Если Вам  необходимы  инструкции,  описывающие  методы  использования
входного экрана в системе Object Professional, обратитесь к документа-
ции, описывающей  модуль OPENTRY.) После того, как Вы завершите внесе-
ние изменений, нажмите на клавишу <Esc>, <ClickRight>  (правую  кнопку
"мыши")  или на клавишу <CtrlEnter> для того, чтобы вернуться в основ-
ное меню. Заметим, что нажатие на клавишу <Esc>  или  <ClickRight>  НЕ
будет отменять все внесенные Вами изменения, а только те, которые вне-
сены Вами в последнее редактируемое поле.

     Поля во  входном экране объединены по разделам, и аналогичным об-
разом объединены их описания, которые приводятся ниже. В каждом случае
в первой строке приводится название параметра опции, вслед за  которым
(в  той же строке) указывается его значение, принимаемое по умолчанию.
Вторая и последующие строки содержат краткое описание опции.
     (Прим. перев.:  в  тексте перевода вторая строка используется для
перевода названия параметра на русский язык; собственно краткое описа-
ние параметра приводится, начиная с третьей строки.)

     Опции, относящиеся к программам типа TSR

     Primary hotkey                                   $0A0F
     (Первичная "горячая клавиша")
     Первичная комбинация клавиш, используемая для того, чтобы активи-
зировать программу DESKPOP. Введите соответствующее значение  в  шест-
надцатиричном  коде или нажмите на клавишу <F10>, чтобы выбрать ключе-
вую комбинацию из пары, указанной в списке подбора (одна  клавиша  для
флажков сдвига,  другая - для кода сканирования). Подробные сведения о
значениях "горячих клавиш" приведены в документации,  описывающей  мо-
дуль OPTSR.

     Hotkey string                                  Alt+LeftShift+Tab
     (Строка "горячих клавиш")

                                 - 45 -
     Строка представлений первичной "горячей  клавиши".  Выводится  на
экран программой DESKPOP только непосредственно перед тем, как та ста-
новится  резидентной. Если у Вас имеется достаточно пространства в па-
мяти, Вы можете, если эахотите,  включить  сюда  назначение  вторичной
"горячей клавиши".


     Secondary hotkey                                 $0520
     (Вторичная "горячая  клавиша")
     Вторичная комбинация клавиш, используемая для того, чтобы активизи-
ровать программу DESKPOP.

     Path for swap files                              C:\
     (Путь для файлов подкачки)
     Дисковод:\Каталог, в который должны записываться файлы подкачки.

     Swap name#1                                      DESKPOP1.$$$
     (Имя первого файла подкачки)
     Swap name#2                                      DESKPOP2.$$$
     (Имя второго файла подкачки)
     Имена двух  файлов  подкачки (один для исходного текста программы
DESKPOP и данных, а другой для исходного текста и данных, которые  бу-
дут перезаписываться во время подкачки DESKPOP).

     Use EMS if available                             Y
     (Использовать для подкачки память               (Да)
      типа EMS, если это возможно)
     Следует ли использовать память типа EMS для хранения  подкачивае-
мых данных, если имеется такая возможность?

     Show swap message                                Y
     (Отображать сообщения о подкачке)               (Да)
     Нужно ли  выводить на экран сообщения "Swapping in..." ("Произво-
дится подкачка в ...") и "Swapping out..." ("Производится подкачка  из
...") в то время, когда информация на экране "всплывает" или "удаляет-
ся" информации.


                                 - 46 -
     Опции отображения информации на экране

     Enable mouse port                                Y
     (Доступен порт "мыши")                          (Да)
     Следует ли использовать "мышь" при работе с DESKPOP, если это ус-
тройство установлено?

     Color selection                                  Auto
     (Выбор цветов)                                  (Авто)
     "Auto" ("авто") означает, что выбор атрибутов цветного или монох-
роматического осуществляется автоматически. "Color" ("цвет") означает,
что  всегда  используется  набор атрибутов для цветной системы. "Mono"
("моно") означает, что всегда используется набор атрибутов для  монох-
ромной системы.

     Опции программы поиска

     Default extension                                <none>
     (Значение  для расширения,                   (никакого значения
     принимаемое по умолчанию)                     не устанавливается)
     Значение для расширения, принимаемое по умолчанию при использова-
нии,  когда  выдается приглашение для ввода имен файлов. (По умолчанию
не устанавливается никакого значения.)

     Default mode                                     ASCII
     (Режим по умолчанию)                            (Код ASCII)
     Принимаемое по умолчанию значение для  вида  отображения  на  экране
("ASCII" - в коде ASCII или "Hex" - в шестнадцатиричном коде).

     Tab expansion                                    Y
     (Расширение табуляции)                          (Да)
     Нужно ли расширить табуляцию пробелами?

     Strip high bits                                  N
     (Полоска высокого бита)                        (Нет)
     Нужно ли выводить при выводе каждого символа его высокий бит?


                                 - 47 -
     File buffers                                     4
     (Число буферов для файлов)
     Число буферов,  которое  следует использовать для того, чтобы содер-
жать текст из файла, который отображается.

     Опции программы редактирования

     Default extension                                <none>
     (Расширение имени файла,                   (никакое значение
     принимаемое по умолчанию)                  не устанавливается)
     Расширение имени файла, которое должно быть использовано по умол-
чанию в ответ на приглашение ввести имена  файлов.  (По  умолчанию  не
устанавливается никакого значения.)

     Auto indent                                      Y
     (Автоматическая установка отступа)              (Да)
     Следует ли использовать режим автоматической установки отступа?

     Delete joins lines                               N
     (Объединение строк с помощью                    (Нет)
     клавиши <Del>)
     Должно ли нажатие на клавишу <Del> в конце строки вызывать присо-
единение к ней следующей строки?

     Indent starts para                               N
     (Абзац начинается с отступа)                    (Да)
     При переформатировании следует ли оставлять пробелы в начале  той
строки, которая рассматривается как начало нового абзаца?

     Smart tabs                                        Y
     (Интеллектуальное переключение                   (Да)
     табуляции)
     Следует ли принимать по умолчанию, что расстояния между позициями
табулятора будут изменяться интеллектуально (а не являются фиксирован-
ными)?

     Tab size                                          8

                                 - 48 -
     (Размеры табуляции)
     Число колонок  между  позициями табулятора (только для режима ис-
пользования фиксированных одинаковых расстояний для табуляции).

     Word wrap                                         Y
     ("Сворачивание" слов)                            (Да)
     Следует ли включить ли по умолчанию режим "сворачивания" слов?

     Wrap at column 1                                  Y
     ("Сворачивание" в колонке 1)                            (Да)
     При положении  курсора  в  колонке 1 должно ли нажатие на клавишу
<Left> перемещать курсор к концу предыдущей строки?

     Make backup files                                Y
     (Создать копию предыдущего состояния файла)     (Да)
     При сохранении уже существующего файла нужно ли сначала  переиме-
новать текущий файл с использованием расширения ".BAK"?

     Read partial files                               N
     (Считывать файлы по частям)                     (Нет)
     Если файл  слишком велик для того, чтобы можно было прочитать его
полностью, следует ли прочитать ту его часть, которая помещается ?

     Buffer size                                      65521
     (Размер буфера)
     Размер наибольшего файла, который  может  быть  загружен  в  окно
"Editor" ("Редактор"). (Действующее ограничение составляет половину от
указанного значения).

     Опции программы управления файлами

     Buffer size                                      16384
     (Размер буфера)
     Косвенно определяет, сколько имен файлов/каталогов может быть од-
новременно отображено в окне "Files" ("Файлы"). Значение 16 Кбайт  оп-
ределяет соотношение между емкостью и используемым объемом памяти. Это
значение можно уменьшить только в том случае, если Ваши ресурсы памяти

                                 - 49 -
весьма ограничены. Увеличение же этого значения приведет к ограничению
объема памяти, предоставляемой для других окон.

     Confirm changes                                   Y
     (Подтвердить изменения)                          (Да)
     Нужно ли выводить на экран запрос для подтверждения всех операций
над файлами?

     Filename format                                  Name
     (Формат для имен файлов)                        (Имя)
     Установить формат для имен файлов - Name ("имя") или All ("все").
(Прим. перев.: по-видимому, при формате "Name" выводятся только  имена
файлов, при формате "All" выводятся все сведения о файлах).

     Sort order                                       Name
     (Порядок сортировки)                            (Имя)
     Принимаемый по умолчанию порядок, в котором должны быть  отсорти-
рованы имена файлов - Name ("имя"), Date ("дата"), Size ("размер") или
MS-DOS). (Прим. перев.: по-видимому, параметр "Name"  означает  сорти-
ровку файлов по их именам в алфавитном порядке, "Date" - сортировку по
датам  обработки файлов, "Size" - по размеру файлов, "MS-DOS" - сорти-
ровку, предусматриваемую системой МS-DOS.)

     Опции для телефонной книги

     Default phone book                               <none>
     (Умолчание для телефонной                   (никакое значение не
     книги)                                       не устанавливается
     Имя файла, которое по умолчанию выводится на экран, когда  откры-
вается окно "Phone" ("Телефон"). (По умолчанию никакого значения не ус-
танавливается).

     Default extension                                PB
     (Расширение имени файла,
     принимаемое по умолчанию)
     Расширение, принимаемое  по умолчанию для имен файлов, являющихся
телефонными книгами.

                                 - 50 -

     Modem installed                                  Y
     (Модем установлен)                              (Да)
     Если задано значение "N" ("No", т.е. "Нет"), то использование ко-
манд набора номера с помощью модема и подвешивания модема будет запре-
щено. Используйте значение "N" в том случае, если у Вас нет модема или
если он не совместим с системой Hayes.

     Communications port                              COM1
     (Порт коммуникации)
     Тип порта   коммуникации  (COM),  к  которому  подсоединен  модем
     ("COM1" или "COM2").

     Baud rate                                        1200
     (Скорость обмена информацией)
     Скорость обмена  информацией, которую нужно установить при наборе
номера телефона с помощью модема (возможные значения:  300,  1200  или
2400).

     Dial modem string                                ATDT
     (Строка набора модема)
     Строка, посылаемая в совместимый с системой Hayes модем для того,
чтобы набрать  номер  телефона  ("ATDT"  = "ATtention Dial Touchtone").
Если имеющаяся в Вашем распоряжении телефонная линия не  подходит  для
сенсорного набора номера телефона ("Touch-Tone"), попытайтесь  исполь-
зовать вместо указанного значения значение "ATDP".

     Hang up modem string                             ATH0
     ("Подвешивание" строки модема)
     Строка, используемая для "подвешивания" модема.

     G. Соглашение о приобретении

     Настоящее программное обеспечение и сопроводительная документация
защищаются Законом об охране авторских прав в США и условиями Междуна-
родного Договора. Любое использование этого программного обеспечения в
нарушение  Закона  об  охране авторских прав или положений упомянутого

                                 - 51 -
договора будет неукоснительно преследоваться в  судебном  порядке  при
обнаружения подобного факта.

     На пакет  Object  Professional  распространяется  авторское право
фирмы Turbo Power Software, установленное в 1987, 1988 и  1989  годах.
Отдельные  части  пакета  защищены  авторским  правом фирмы Sonny Hill
Software в 1985 и 1986 годах и используются по  лицензии  фирмы  Turbo
Power Software.

     Turbo Power Software предоставляет Вам право создать архивные ко-
пии этого  программного обеспечения только для целей получения резерв-
ных копий и предохранения Ваших капиталовложений от потерь. Ни при ка-
ких обстоятельствах Вам не разрешается копировать настоящее  программ-
ное обеспечение  или  документацию  с  целью  предоставления их другим
пользователям. Ни при каких условиях Вы не имеете права  удалять  пре-
дупреждения об авторском праве, которыми снабжена  часть  программного
обеспечения или документации.

     Вы имеете  право  распределять без текущей оплаты  или дальнейших
лицензий свои собственные скомпилированные  программы,  основанные  на
любом исходном тексте программы и предварительно оттранслированных мо-
дулях системы Object Professional. Вы не имеете права распределять ни-
каких  исходных текстов программ, предварительно оттранслированных мо-
дулей системы Object Professional или программ-примеров, не имея пись-
менного разрешения от фирмы TurboPower Software.

     Заметим, что предыдущие ограничения не запрещают Вам распределять
Ваши собственные исходные коды или модули,, которые зависят от модулей
системы Object Professional. Однако другие пользователи, которые полу-
чают Ваши модули, должны иметь свои собственные копии  системы  Object
Professional для того, чтобы записать программы, используюшие Ваши мо-
дули.

     Предоставляемое программное  обеспечение  может быть использовано
одним сотрудником на стольких персональных системах, сколько этот  со-
трудник использует.  Мы предполагаем, что групповые программные проек-
ты, в которых используется это программное обеспечение, будут приобре-

                                 - 52 -
тать копию  программного обеспеченяия и документации для каждого члена
группы. Поддерживайте контакт с фирмой TurboPower Software для  обсуж-
дения  вопросов  о скидке и дополнительных соглашениях по лицензирова-
нию.

     Что касается физического состояния дискет и документации, постав-
ляемой с системой Object Professional, то  фирма  TurboPower  Software
дает  гарантию,  что  все эти материалы не имеют дефектов и могут быть
использованы в течение 30 дней после дня приобретения. Если Вы  извес-
тите  нас  о  таких  дефектах  в  течение гарантийного срока, то фирма
TurboPower Software обязуется  бесплатно  заменить  Вам  дефектную(ые)
дискету(ы) или документацию.

     Фирма TurboPower  Software гарантирует, что программное обеспече-
ние будет функционировать так, как описано в этой документации, в  те-
чение 30  дней  со дня приобретения. Если Вы обнаружите ошибку или не-
достаток, мы попросим Вас представить  достаточно  подробный  отчет  о
возникшей проблеме для того, чтобы мы могли понять вопрос и разобрать-
ся с  ним.  Если  Вы  известите  нас о подобной проблеме с программным
обеспечением в  течение  гарантийного  периода,  то  фирма  TurboPower
Software заменит Вам бесплатно дефектное программное обеспечение.

     Фирма TurboPower  Software,  кроме того, гарантирует, что покупа-
тель останется полностью удовлетворенным нашим продуктом в  течение 30
дней со дня приобретения. Если Вы остались не удовлетворены по той или
иной причине, и при этом фирма TurboPower Software не в состоянии  ре-
шить возникшую проблему, для дальнейшего согласования вопроса Вам сле-
дует контактировать с тем бюро, от которого Вам было продано программ-
ное обеспечение.  Если  Вы приобретали продукт непосредственно у фирмы
TurboPower Software, мы Вам компенсируем полную стоимость покупки  при
получении от Вас в полном объеме оригинальной(ых) программной(ых) дис-
кетки(ток) и  документации.  Фирма  TurboPower  Software считает своим
долгом возвратить затраты своим  собственным  клиентам,  но  не  может
предложить компенсацию  никому из тех пользователей, кто не приобретал
этот продукт непосредственно у нас.

     Фирма TurboPower  Software  не предполагает предоставления какой-

                                 - 53 -
либо  компенсации  за использование  системы Object Professional сверх
оригинальной стоимости программного обеспечения при  его  продаже.  Ни
при каких обстоятельствах фирма TurboPower Software не предусматривает
никакой компенсации за Ваши дополнительные убытки, включая любые поте-
ри прибыли, потери сохранности или другие убытки вследствие  аварийных
ситуаций или  их  последствий,  убытки, которые могут возникнуть из-за
использования или невозможности использования этих программ, даже если
фирма TurboPower Software  была  предуведомлена  о  возможности  таких
убытков.

     Используя настоящее программное обеспечение, Вы даете свое согла-
сие  на  те  условия, которые изложены в настоящем разделе. Если Вы не
согласны с ними, Вы должны немедленно  возвратить  весь  пакет  Object
Professional полностью для возмещения затрат.

     Фирма TurboPower Software предлагает телефон поддержки для Object
Professional на доступной основе без дополнительной оплаты. За советом
или консультацией  мы  приглашаем  Вас вызывать нашу линию поддержки с
понедельника по пятницу от 9 часов утра до 5 часов пополудни (Тихооке-
анское  время).  Мы  также поддерживаем счет CompuServe и общественный
совет  для  того, чтобы Вам  помочь.  Информация  о  доступе  к  счету
Compuserve и номер телефона технической поддержки указаны на титульном
листе настоящего руководства.

     Мы верим в поддержку наших пользователей и сделаем все от нас за-
висящее для того, чтобы наше программное обеспечение сумело справиться
с той работой, для выполнения которой оно было разработано!

     2. ПРИНЦИПЫ ОРГАНИЗАЦИИ

     В настоящей главе мы попытаемся дать Вам широкий обзор библиотеки
в целом. Эта глава содержит не перечень возможностей, а скорее  сведе-
ния  о том, как организована библиотека и каковы те определяющие прин-
ципы, на основе которых она была сформирована.  В  последующих  главах
будут детально описываться отдельные модули; в данной же главе мы пос-
тараемся  дать  Вам  представление  о том, каково соответствие модулей
между собой. Наша задача - помочь Вам увидеть общую  картину  в  целом
("The Big Picture").

                                 - 54 -

     Глава разделена на две части. В первой части модули распределяют-
ся по логическим группам в соответствии с тем, какого рода функции они
реализуют.  Во  второй  части  обсуждаются многочисленные соглашения и
принципы, которые были положены в основу при их написании.

     А. Обзор библиотеки

     Если Вы взглянули на оглавление, а Вы, несомненно, это уже сдела-
ли, то Вы знаете, что в данном пособии  библиотека  разделена  на  три
группы: "Управление  экраном",  "Ввод/вывод  данных" и "Программы типа
TSR и другие сведения" (т.е. все, что не соответствует первым двум ка-
тегориям). Руководство организовано так для  того,  чтобы  постараться
свести  к минимуму то время, которое Вы должны будете затратить на по-
иск подпрограммы, необходимой Вам для  выполнения  конкретной  задачи.
Если Вы хотите выяснить, как построить на экране изображение всплываю-
щего  окна,  окаймленного  границами, Вам не придется пролистывать все
три тома руководства, чтобы найти необходимую информацию.

     Но в  других  отношениях это деление на группы может до некоторой
степени ввести в заблуждение. Так, например, и в модуле OPCRT, и в мо-
дуле OPWINDOW имеются подпрограммы, относящиеся к экрану,  но  тем  не
менее эти модули ОЧЕНЬ различны: OPCRT содержит большое число подпрог-
рамм низкого уровня, в то время как OPWINDOW содержит небольшую группу
объектов,  которые действуют на значительно более высоком уровне. Поэ-
тому данный обзор предлагает  другой  принцип  объединения  модулей  в
группы,  а  именно такой, который отражает качественные различия между
ними.

     К первой группе могут быть отнесены СИСТЕМНО-ОРИЕНТИРОВАННЫЕ  МО-
ДУЛИ,  которые  в  значительной  степени, если не полностью состоят из
традиционных процедур и функций, а не из объектов; это модули, во мно-
гих случаях обеспечивающие подпрограммы  низкого  уровня,  которые,  в
свою  очередь, используются объектами более высокого уровня в одной из
других групп. В эту группу входят следующие модули:

     OP8087

                                 - 55 -
     OPASCIIZ
     OPBCD
     OPCOLOR
     OPCRT         (ColorSet)
     OPDATE
     OPDOS
     OPEMS
     OPENHKBD
     OPERRHAN
     OPEXEC
     OPEXTMEM
     OPINLINE
     OPINT
     OPMACED
     OPMACRO
     OPMOUSE
     OPREPLAY
     OPSORT
     OPSTRDEV
     OPSTRING
     OPTSR
     OPSWAP
     OPSWAP1

     Единственным модулем, который  действительно  выпадает  из  этого
списка,  является модуль OPMACED, реализующий клавиатурный макроредак-
тор. С точки зрения функционального назначения может  показаться,  что
он  принадлежит  к  третьей  группе; однако он включен в первую группу
вследствие того, что он не содержит никаких объектов. Модуль OPCRT вы-
ходит из общего ряда только в том отношении, что он  реализует  объект
"ColorSet" ("Цветовой_Набор"). (Имена, указанные  в  перечнях  модулей
внутрив круглых скобок, определяют объекты, реализуемые в данном моду-
ле).

     Вторая группа состоит из МОДУЛЕЙ, КОТОРЫЕ РЕАЛИЗУЮТ ОБЪЕКТЫ  НИЗ-
КОГО  УРОВНЯ  (или  помогают их реализовывать). В нее входят следующие
модули:

                                 - 56 -

     OPABSFLD    (AbstractField)
     OPCLONE     (Cloner)
     OPCMD       (CommandProcessor, CommandPacker)
     OPDEVICE
     OPFEDIT
     OPFIELD     (SelectField, EntryField, различные производные типы)
     OPFRAME     (ScreenRect, HeaderNode, ShadowNode, HotNode,
                  ScrollBar, Frame)
     OPLARRAY    (AbstractArray, RamArray, EmsArray, VirtualArray,
                  OpArray)
     OPPRINT     (PrintMode, Printer)
     OPPRNLOW    (BasePrinter, DosPrinter, FlexiblePrinter,
                  BiosPrinter)
     OPROOT      (Root, Singlelist, DoubleList, BufIdStream, Library,
                  многие другие)
     OPSEDIT     (SimpleLineEditor)

     Большинство объектов в этих модулях формируют строительные  блоки
для  объектов более высокого уровня: например, "контейнерные классы" в
модуле OPROOT  (стеки,  списки,  наборы),  типы  полей  в  OPABSFLD  и
OPFIELD; объект  "CommandProcessor" ("Командный_Процессор") в OPCMD, а
также объекты  "Frame"  ("Рамка"), "ScrollBar" ("Линейка_Прокрутки") и
"HotNode" ("Горячий_Узел") в модуле OPFRAME. В других случаях эти  мо-
дули обеспечивают объекты, которые полезны сами по себе, но могут быть
использованы и  как  строительные  блоки:  например,  объект  "Cloner"
("Имитатор") в  модуле OPCLONE, объекты больших массивов в OPLARRAY, а
также объект "SimpleLineEditor" ("Редактор_Простой_Строки") в OPSEDIT.

     Если Вы  посмотрите на иерархию объектов в Приложении C, Вы заме-
тите, что большинство объектов в этих модулях получены непосредственно
из объекта "Root" ("Корень"), который определен в модуле OPROOT.

     Третья группа состоит из МОДУЛЕЙ, КОТОРЫЕ ОБЕСПЕЧИВАЮТ РЕАЛИЗАЦИЮ
ОБЪЕКТОВ ВЫСОКОГО УРОВНЯ путем построения их на основе ресурсов,  пре-
доставляемых модулями первых двух групп. Модули этой группы следующие:


                                 - 57 -
     OPBROWSE     (Browser)
     OPCAL*       (Calendar)
     OPCALC*      (Calculator)
     OPDIR        (DirList, PathList)
     OPEDIT       (LineEditor)
     OPEDITOR     (TextEditor)
     OPENTRY      (EntryScreen, ScrollingEntryScreen)
     OPFORM       (PrintField, производные типы, PrintedForm, Report,
                   другие)
     OPHELP       (AbstractHelpWindow, PagedHelpWindow,
                   ScrollingHelpWindow)
     OPMEMO       (Memo, MemoFile)
     OPMENU       (MenuItemNode, MenuItemList, SubMenu, Menu)
     OPPICK       (PickList)
     OPQKREF*     (QkRefChart)
     OPSELECT     (AbstractSelector, Selector, ScrollingSelector)
     OPWINDOW     (AbstractWindow, RawWindow, StackWindow, Command-
                   Window, другие)

     Наиболее значительным из этих модулей является  модуль  OPWINDOW,
использующий подпрограммы и объекты модулей OPCRT, OPCMD и OPFRAME для
того, чтобы создавать оконные объекты, из которых образуется большинс-
тво других объектов в этих модулях. OPFORM использует модули OPABSFLD,
OPPRNLOW, OPPRINT и OPDEVICE в качестве своих наиболее  важных  строи-
тельных  блоков.  А модуль OPEDIT строится на основе модулей OPABSFLD,
OPFIELD и OPFEDIT.

     Если Вы посмотрите на иерархию объектов в Приложении С, Вы увиди-
те, что большинство объектов в этих модулях НЕ  образованы  на  основе
объекта Root.

     Модули, имена   которых  помечены  звездочкой  (OPCAL,  OPCALC  и
OPQKREF), являются "bonus"-модулями (прим. перев.: т.е.  предоставляе-
мыми  безвозмездно),  которые  реализуют объекты, основанные на окнах.
Эти модули были написаны в  основном  для  использования  в  программе
DESKPOP, но Вы при желании можете включить их в Ваши собственные прог-
раммы. Хотя в данном руководстве документация для этих модулей отсутс-

                                 - 58 -
твует,  их объекты до значительной степени напоминают все другие осно-
ванные на окнах объекты, так что Вы  не  должны  испытывать  серьезных
затруднений, чтобы понять, как их использовать.

     B. Соглашения и руководящие принципы

     При написании Object Professional мы  сочли  необходимым  принять
ряд новых соглашений по программированию и фундаментальных принципов -
как для  того, чтобы облегчить развитие самого пакета, так и для того,
чтобы сделать для Вас процесс пользования этой библиотекой более прос-
тым и удобным. Большинство из этих соглашений должно быть отнесено  по
преимуществу к объектам, но некоторые другие имеют в равной мере отно-
шение и к таким модулям, которые содержат только традиционные процеду-
ры и функции.

     Ниже в настоящей главе рассматривается,  что  представляют  собой
эти соглашения и принципы и какое они имеют для Вас значение. Ознаком-
ление  с  ними  является  первым шагом к тому, чтобы увидеть всю общую
картину в целом ("The Big Picture"), понять ту логику, которая заложе-
на в  иерархии.  Размер  и сложность этой иерархии может показаться на
первый взгляд пугающей, но если Вы прочтете этот раздел тщательно,  Вы
вскоре обнаружите, что многое из того, что Вы знаете о данном объекте,
может быть также применено и к другим объектам в иерархии.

     Вы должны  отдавать  себе полный отчет в том, что при составлении
этой главы мы исходили из того предположения, что Вы знакомы с  основ-
ными концепциями объектно-ориентированного программирования, которые в
общих чертах описаны в "Руководстве по Turbo  Pascal  версии  5.5  для
OOP"  ("Turbo  Pascal 5.5 OOP Guide"). В настоящей главе не содержится
ни определений основных понятий, ни учебного руководства по ООР.  Если
Вы еще  не прочитали "Руководство по ООР" ("OOP Guide") или безнадежно
запутались при его чтении, то Вам, безусловно, необходимо  его  прочи-
тать (или перечитать), прежде чем продолжать изучение настоящего посо-
бия.  С другой стороны, если Вы достаточно уверенно обращаетесь с кон-
цепциями наследственности, полиморфизма, статических и виртуальных ме-
тодов, таблиц виртуальных методов VMT (от "Virtual Method Table", т.е.
"таблица виртуальных методов"), конструкторов и деструкторов,  то  Вам

                                 - 59 -
не о чем беспокоиться.

     Статические методы против виртуальных методов

     Это весьма непростой и спорный вопрос. В "чистых" языках, исполь-
зующих подход  OOP, статические методы не существуют; все методы явля-
ются виртуальными. И сторонник "чистого" подхода OOP мог  бы  сказать,
что  все  методы  в  нашей  иерархии объектов должны быть виртуальными
именно по  той  причине, что виртуальные методы стоят на первом месте.
Такой аргумент можно было бы признать справедливым, но еще больше  ис-
тины  в  том, что делать все методы только виртуальными просто непрак-
тично - по крайней мере,  тогда,  когда  Вы  программируете  на  Turbo
Pascal 5.5.

     На наш  взгляд,  имеются  два  убедительных довода в пользу того,
чтобы везде, где это только возможно, использовать статические методы.
Во-первых, интеллектуальный компоновщик Turbo Pascal не может отменять
неиспользуемые виртуальные методы, а только неиспользуемые статические
методы; простой  акт ввода объекта данного типа приводит к тому, что в
программу должны быть скомпонованы все виртуальные методы этого объек-
та. И во-вторых, чем больше виртуальных методов имеет объект, тем  об-
ширнее его таблица виртуальных методов VMT: объект, имеющий 100 вирту-
альных  методов, использовал бы более 400 байт пространства в сегменте
данных. В системе Object Professional нет ни одного  объекта,  который
бы имел так много виртуальных методов, но если бы все методы были вир-
туальными, в ней бы имелся не один такой объект.

     Полагая, что из практических соображений невозможно во всех  слу-
чаях применять только одни виртуальные методы, мы стоим на тех позици-
ях, что  целесообразно создавать виртуальные методы только в следующих
трех случаях:
     а) если  мы  знаем, что он должен быть отменен объектом-потомком,
     б) если метод предназначен для того, чтобы быть отмененным, и для
этой цели и существует,
 или в) если в самой природе метода заложена возможность того, что же-
лательно его отменить в объекте-потомке.


                                 - 60 -
     Указатели процедур против производных типов

     Еще один концептуально спорный вопрос. Рассмотрим  случай,  когда
для  некоторого  объекта  необходимо  обеспечить средство, позволяющее
программисту передавать такую информацию для объекта, которая не всег-
да бывает известна на момент компилирования. Наглядным примером такого
объекта является  "PickList"  ("Список_Подбора")  в  модуле OPPICK: он
должен обеспечить средство, которое предоставит Вам возможность "сооб-
щить" ему, какие элементы имеются в списке подбора.

     Сторонник "чистого" метода мог бы сказать, что для  решения  этой
проблемы  следует обеспечить фиктивный виртуальный метод, который, как
предполагается, будет возвращать необходимую информацию, и пусть потом
программист создает  производный  тип, который отменяет этот метод. Но
такой подход порождает две проблемы. Первая заключается в том, что бы-
ло бы досадно, если бы КАЖДЫЙ раз, когда возникает потребность исполь-
зовать, например, объект PickList, пришлось создавать производный тип,
особенно в том случае, если все, что Вам действительно требуется - это
написать функцию для восстановления строки на основе номера  элемента.
Вторая проблема состоит в том, что при этом в большинстве случаев иск-
лючается возможность использования одного и того же  объекта  PickList
для отображения на экране различных списков.

     Мы предпочитаем принять компромиссное решение. В подобных случаях
действительно имеются виртуальные методы, которые Вы можете  отменить,
если захотите.  Но  помимо  этого существуют такие средства, которые с
помощью указателя процедуры задают ту подпрограмму, написанную пользо-
вателем, которая нужна для выполнения операции. Реализация виртуально-
го  метода  по  умолчанию  просто использует этот указатель процедуры,
чтобы вызвать Вашу подпрограмму.

     Конструкторы и деструкторы

     В системе Object Professional в соответствии с соглашениями фирмы
Borland принято  для  конструкторов  использовать имя "Init" ("Началь-
ный"), а  для  деструкторов  - имя "Done" ("Законченный"). Большинство
объектов также имеет конструктор с именем "Load" ("Загрузка"), который

                                 - 61 -
используется для загрузки объекта из потока (еще больше на потоках че-
рез момент ?) - в соответствии с другим соглашением фирмы Borland.

     Для  обеспечения  унификации каждый объект в иерархии  имеет  де-
структор с именем Done, даже если он и не нужен, и эти деструкторы ни-
когда не принимают никаких параметров. Что касается конструкторов, од-
нако, то здесь существуют некоторые варианты.

     Конструктор Init  всегда  принимает  столько  параметров, сколько
возможно. Если  в  определенных  обстоятельствах  желательно  передать
больше параметров, существует второй конструктор с именем "InitCustom"
("Начальная_Настройка"), который их принимает (дополнительно  к  пара-
метрам, которые переданы конструктору Init). В объекте, имеющем конст-
руктор  InitCustom,  конструктор  Init  обычно используется для вызова
конструктора InitCustom, который, в свою очередь, по умолчанию переда-
ет значения туда, где это необходимо.

     Существует несколько объектов, которые имеют также и другие конс-
трукторы - например,  "MemoFile"  ("Файл_Памяти")  (модуль  OPMEMO)  и
PickList (модуль  OPPICK) - но при этом в большинстве случаев их имена
начинаются с "Init", и они принимают такие же параметры, как и  конст-
руктор Init.

     Опции

     Большинство наиболее крупных объектов в Object Professional обес-
печивают множество опций включения и отключения, которые позволяют Вам
изменять  режим  их работы в соответствии с собственными пожеланиями и
потребностями. Если Вы знакомы с Turbo Professional,  Вы  знаете,  что
прежде мы  обрабатывали  эти опции либо с помощью булевых типизованных
констант, которые можно было модифицировать,  либо  иногда  с  помощью
процедур,  которые  Вы  могли вызывать, чтобы активизировать опцию или
сделать ее не активной. Каждый их этих двух подходов имеет свои сущес-
твенные недостатки. Метод использования  глобальных  констант,  помимо
того, что требует дополнительной памяти, может привести к противоречи-
ям  в  том  случае, если два объекта являются активными одновременно и
каждому требуются различные опции. Другой подход, при котором для каж-

                                 - 62 -
дой опции имеется своя процедура, может привести к чересчур  многочис-
ленным  вызовам  процедур.  Поэтому в Object Professional мы применили
совершенно другой принцип, подобный тому подходу, который используется
в большинстве библиотек C.

     Все булевы  опции представлены в виде битовых флажков. Все объек-
ты, которые реализуют  такие  опции,  содержат  поле  (типа  "Byte"  -
"байт",  "Word"  - "слово" или "LongInt" - "длинное целое"), в котором
хранятся эти битовые флажки, а также совокупность трех методов для  их
изменения или  проверки  их  состояния:  метод  "xxOptionsOn"  ("Вклю-
чить_Опции_Объекта_хх") активизирует    одну    или    более    опций,
метод "xxOptionsOff" ("Выключить_Опции_Объекта_хх") делает  неактивной
одну или больше опций и метод "xxOptionsAreOn" ("Включены_ли_Опции_Об-
ъекта_хх") возвращает значение "True" ("Истина"),  если  указанная(ые)
опция(и) включена(ы).

     Символы "xx" представляют собой одно-, двух-  или  трехсимвольный
префикс,  идентифицирующий  объект. Этот префикс является необходимым,
потому что данный объект может иметь больше одного набора опций.  Нап-
ример, объект  "Memo"  ("Память") имеет набор опций, относящихся к ок-
нам, которые  унаследованы  из "RawWindow" ("Заготовка_Окна"), а также
набор опций, относящихся к памяти. Чтобы активизировать опцию, относя-
щуюся к окнам, Вам следует вызвать метод wOptionsOn; для  того,  чтобы
активизировать  опцию,  относящуюся  к памяти, Вам нужно вызвать метод
meOptionsOn.

     Те же самые префиксы используются в именах опций, которые опреде-
ляются  как  константы.  Например,  ниже  приведены  опции для объекта
Browser (модуль OPBROWSE), в которых используется префикс "br":

     brHexMode      = $01; (00000001 в двоичном коде)
     brTabExpand    = $02; (00000010)
     brStripHigh    = $04; (00000100)
     brMousePage    = $08; (00001000)
     brNewFile      = $10; (00010000)
     brStreamReload = $20; (00100000)


                                 - 63 -
     Как показывают  приведенные  справа  комментарии,  каждое из этих
значений соответствует какому-либо одному биту: brHexMode соответству-
ет биту 0, brTabExpand - биту 1 и т. д.

     Чтобы активизировать  отдельную   опцию,   Вы   вызываете   метод
xxOptionsOn вместе с именем опции. Например, чтобы активизировать рас-
ширение  границ при табуляции в объекте Browser, Вы должны вызвать ме-
тод "brOptionsOn(brTabExpand)". Чтобы активизировать  несколько  опций
сразу, Вы просто прибавляете их друг к другу:
     "brOptionsOn(brTabExpand+brStripHigh+brMousePage)".

     В большинстве  случаев объект имеет набор опций по умолчанию, ко-
торый хранится в глобальной типизованной константе, имя которой  запи-
сывается  в виде "DefXxxOptions": например, оконные опции, принимаемые
по умолчанию, хранятся в "DefWindowOptions". Эти опции будут  действо-
вать до   тех   пор,   пока  Вы  специально  их  не  отмените,  вызвав
метод xxOptionsOff. Если необходимо, Вы можете  изменить  принятые  по
умолчанию опции путем изменения типизованной константы.

     В некоторых  случаях  требуемые  значения  опции могут или должны
быть переданы конструктору в качестве одного из параметров.  Например,
все объекты,   основанные   на   окнах,  имеют  конструктор  с  именем
InitCustom, который принимает параметр, определяющий для данного  объ-
екта опции, относящиеся к окнам. Например:

   MyWindow.InitCustom(1, 1, 80, 25, MyColorSet, wClear+wSaveContents)

     Если Вы  вызываете вместо этого конструктора конструктор Init, то
этот вызов будет просто таким:

   MyWindow.Init(1, 1, 80, 25)

     Конструктор Init затем будет вызывать InitCustom, передавая ему в
качестве последних двух параметров значение параметра  DefaultColorSet
(который    будет   рассматриваться   ниже)   и   значение   параметра
DefWindowOptions. Если вы хотите использовать все оконные опции,  при-
нимаемые  по умолчанию, ПЛЮС ЕЩЕ некоторую опцию, то Вы можете указать

                                 - 64 -
с помощью оператора OR две опции, как показано ниже:
                                                                      
     MyWindow.InitCustom(...,DefWindowOptions or wAllMouseEvents)
                                                                      
     Подобно этому, чтобы использовать все опции, принимаемые по умол-
чанию, за исключением какой-либо одной, Вы можете отменить ее "маску",
используя оператор AND NOT:
                                                                      
 MyWindow.InitCustom(...,DefWindowOptions and not wSaveContents)
                                                                      
     В этих  ситуациях  не  представляется целесообразным использовать
символ "+" вместо "OR" и символ "-" вместо "AND NOT". Знак  "+"  будет
работать  только  в  том случае, если известно, что опция по умолчанию
отключена (OFF), а знак "-" будет работать только тогда,  когда  опция
по умолчанию активизирована (ON). Если принимаемые по умолчанию значе-
ния опций изменяются, значение Вашего выражения будет искажено.
                                                                      
     Наконец, необходимо ясно представлять, что установленные для мно-
гих опций значения являются флажками,  предназначенными  исключительно
для  внутреннего использования, и их нельзя изменять. Когда объект ис-
пользует такие флажки, то модуль, который данный объект реализует, бу-
дет иметь глобальную типизованную константу с именем  "BadXxxOptions",
которая определяет    именно   эти   опции.   Соответствующие   методы
xxOptionsOn и xxOptionsOff используют эту информацию,  чтобы  защитить
такие  опции от включения или выключения. Главная причина, из-за кото-
рой BadXxxOptions должна представлять собой не простую, а типизованную
константу (которая может быть изменена), заключается в том, что  нужно
обеспечить  возможность  пополнять ее список с помощью объектов-потом-
ков, которые определяют новые опции.
                                                                      
     Соглашения об именах
                                                                      
     Повсюду, где это только возможно, мы старались принять соглашения
о присвоении имен, которые должны облегчить запоминание  имен  методов
или  опций. Некоторые из этих соглашений были уже упомянуты: конструк-
торы обычно называются "Init", "InitCustom" или "InitXxx"; конструкто-
ры, которые загружают объект из потока, называются "Load"; методы, ко-

                                 - 65 -
торые хранят объекты в потоке, называются "Store"; деструкторы называ-
ются "Done";  имена опций и методы, которые принимают опции в качестве
параметров, имеют префикс, содержащий от одного до трех символов,  ко-
торый связан с именем объекта. Но существуют некоторые другие соглаше-
ния об именах, которые Вам необходимо учитывать.
                                                                      
     1. Большинство объектов имеют несколько методов, обычно статичес-
ких, которые предназначены строго для внутреннего использования.  Име-
нам этих методов всегда предшествуют те же одно-трехсимвольные префик-
сы, которые используются для имен опций.
                                                                      
     2. Этот  префикс используется также для имен полей в объекте. Это
соглашение позволяет Вам на основе имени поля сказать, какой  объект в
иерархии объектов это поле определяет.
                                                                      
     3. Этот префикс используется также для виртуальных методов, кото-
рые Вы не должны вызывать сами, но которые Вы, возможно,  захотели  бы
отменить  в типе-потомке. (Смотрите выше подраздел "Указатели процедур
против производных типов").
                                                                      
     4. В библиотеке имеется множество типов объектов, которые сущест-
вуют  только  для того, чтобы их отменили, объекты, которые Вы никогда
не захотите создать по требованию. Имена таких объектов обычно начина-
ются со слова "Abstract".
                                                                      
     5. Имя  командного  процессора  для  объекта  всегда  имеет   вид
"XxxCommands" ("Команды_Объекта_Ххх"), где "Xxx" определяет соответст-
вующий объект.
                                                                      
     6. Имя подпрограммы регистрации потока для объекта  всегда  имеет
вид "XxxStream" ("Поток_Объекта_Ххх"), где "Xxx" определяет соответст-
вующий объект.
                                                                      
     Потоки
                                                                      
     За несколькими незначительными исключениями все объекты библиоте-
ки  построены так, чтобы обеспечить возможность их хранения в потоках.

                                 - 66 -
Любой объект, который может быть загружен в поток, имеет конструктор с
названием "Load"  и соответствующий метод с названием "Store" ("Хране-
ние"). Более подробные сведения о потоках приведены в документации  по
OPROOT.
                                                                      
     Использование динамически распределяемой области
                                                                      
     Все объекты в библиотеке  используют  динамически  распределяемую
область для хранения данных в тех случаях, когда может изменяться раз-
мер  данных,  а также в тех случаях, когда может изменяться количество
элементов данных (например, список полей с использованием указателей в
экране ввода данных и список элементов в меню). Такой подход обеспечи-
вает эффективное использование имеющейся в Вашем распоряжении  памяти,
но  он также обладает одним возможным существенным недостатком: он мо-
жет вызвать в определенных случаях проблемы  фрагментирования  динами-
чески распределяемой области.
                                                                      
     Чаще всего  проблемы  фрагментирования динамически распределяемой
области могут возникнуть при использовании программ, которые создают и
разрушают множество объектов  без  какого-либо  определенного  порядка
(лучшим  примером таких программ является DESKPOP), и особенно это от-
носится к таким программам, которые позволяют  пользователю  "распахи-
вать"  окна  во  весь экран и изменять их размеры. Мы много размышляли
над этим вопросом, надеясь найти способ, чтобы избежать всей этой  со-
вокупности проблем,  но пришли к заключению, что все возможные решения
являются либо чересчур  неуклюжими,  либо  слишком  навязчивыми,  либо
слишком  рискованными.  Единственное разумное решение этой проблемы мы
видим в том, чтобы фирма Borland обеспечила программу управления дина-
мически распределяемой областью, с помощью которой можно  осуществлять
очистку памяти более или менее доступно удобно и понятно.
                                                                      
     Теперь перейдем  к  менее пессимистичному и более общему вопросу.
Модуль OPROOT, который используется большинством других  модулей,  со-
держащих объекты, устанавливает функцию ошибки динамически распределя-
емой области, которая "отвечает" за то, чтобы все аварийно завершивши-
еся  вызовы  New или GetMem возвращали "пустое" значение ("Nil"). Если
необходимо, Вы можете отменить этот режим путем установки  собственной

                                 - 67 -
функции  ошибки  динамически распределяемой области, но прежде чем это
сделать, необходимо убедиться, что Вы ясно себе представляете  возмож-
ные  последствия.  Если это только возможно, мы рекомендуем Вам писать
свою программу так, чтобы она работала при этих  условиях.  Единствен-
ное, что Вы можете сделать, чтобы облегчить свою работу, это использо-
вать  функции  GetMemCheck  и FreeMemCheck в модуле OPROOT всякий раз,
когда Вам необходимо разместить память или аннулировать размещение па-
мяти из динамически распределяемой области; это то, что  могут  делать
все  Ваши  объекты.  Подробные  сведения об использовании этих функций
приведены в документации, описывающей модуль OPROOT.
                                                                      
     Обработка ошибок
                                                                      
     Все объекты  более  высокого  уровня  в библиотеке построены так,
чтобы выдавать сообщения обо всех ошибках, которые  встречаются  после
того,  как объект был введен в центральную программу обработки ошибок.
Эта программа обработки ошибок передает как код ошибки, так и (обычно)
принятое по умолчанию сообщение об ошибках, которое позволяет програм-
ме  обработки  ошибок вывести на экран либо типовое сообщение об ошиб-
ках, либо  сообщение,  модифицированное в соответствии с потребностями
пользователя. Ошибки,  которые встречаются в конструкторах (прежде чем
имеется возможность указать программу обработки  ошибок),  хранятся  в
глобальной переменной InitStatus, объявленной в модуле  OPROOT.  Более
подробные сведения,  касающиеся способов обработки ошибок, приведены в
документации, описывающей  объект "CommandWindow" ("Окно_Команд") (мо-
дуль OPWINDOW) и в приложении D ("Коды ошибок").
                                                                      
     Обработка команд и клавиатуры
                                                                      
     Все объекты  в  библиотеке,  которые  действуют на основе команд,
вводимых с  клавиатуры,  используют объект с именем "CommandProcessor"
("Командный_Процессор") для того, чтобы преобразовать нажатия на  кла-
виши в команды. Для того, чтобы это было возможно, соответствующий об-
ъект  передает объекту CommandProcessor таблицу команд, представляющую
собой массив особого формата, который устанавливает зависимости  между
последовательностями  клавиш  и командами. Каждая команда в библиотеке
соответствует уникальному коду. Использование кодов  команд  и  таблиц

                                 - 68 -
команд  не только позволяет программе во время своего выполнения моди-
фицировать и добавлять назначения клавиш, но также и создавать отдель-
ные программы конфигурирования, которые позволяют пользователю модифи-
цировать назначения. Подробные сведения, касающиеся обработки  команд,
приведены в документации, описывающей модуль OPCMD.
                                                                      
     Объект CommandProcessor  также  реализует  некоторые  программные
средства обращения к подпрограммам ("hook"), причем наиболее важное из
них  обеспечивает  возможность указать, какая подпрограмма должна быть
вызвана в тот момент, когда  пользователь  нажмет  на  соответствующую
клавишу. Это средство позволяет выполнять "фоновые задачи" в то время,
пока  ввод  команды  с клавиатуры еще не произведен. Этот вопрос также
рассматривается в документации, описывающей модуль OPCMD.
                                                                      
     Обеспечение "мыши"
                                                                      
     Все объекты   в    библиотеке,    которые    используют    объект
CommandProcessor,  обеспечивают  полную  поддержку  манипулятора  типа
"мышь" и все объекты, основанные на CommandWindow, реализуют специаль-
ное обеспечение возможности использования "мыши" для управления линей-
кой  прокрутки и обработки "горячих участков" экрана. Подробные сведе-
ния относительно того, каким образом осуществляется поддержка  "мыши",
приведены  в  документации,  описывающей модули OPMOUSE, OPCMD (объект
CommandProcessor),  OPFRAME (объекты ScrollBar and HotSpot) и OPWINDOW
(объект CommandWindow).
                                                                      
     Средства обращения к контекстно-зависимой помощи
                                                                      
     Все объектов    в    библиотеке,    которые   используют   объект
CommandProcessor, также обеспечивают программные средства обращения, к
оторые облегчают совершенствование системы контекстно-зависимой  помо-
щи. Подробные сведения, касающиеся использования всех этих средств об-
ращения,  которые  в значительной степени идентичны, приведены в доку-
ментации, описывающей модули OPCMD (объект CommandProcessor), OPWINDOW
(объект CommandWindow) и OPHELP.
                                                                      
     Цвета экрана и объекты ColorSet

                                 - 69 -
                                                                      
     В системе Object Professional все объекты, которые выполняют  эк-
ранный  ввод/вывод ("I/O" - от "input/output"), разработаны так, чтобы
облегчить написание программ, автоматическ учитывающих различия  между
цветными и  монохромными  системами.  Поэтому когда объекту необходимо
указать атрибуты отображения информации на экране, этот объект  запра-
шивает  два атрибута: один для цветных систем и другой - для монохром-
ных. После этого объект будет использовать простую подпрограмму в  мо-
дуле  OPCRT для того, чтобы выбрать соответствующий атрибута отображе-
ния в данной ситуации.
                                                                      
     Эти объекты также разработаны таким образом, что позволяют, чтобы
выбранные Вами цветовые характеристики изображения были  сосредоточены
в  единой  структуре данных в объекте с именем ColorSet, который может
быть многократно использован в течение всего времени работы программы.
Когда Вы вводите объект, использующий  множество  различных  атрибутов
отображения,  то  Вы просто передаете ему имя Вашего объекта ColorSet.
Описание объекта ColorSet и более подробные сведения о том,  для  чего
он используется, приведены в документации, описывающей модуль OPCRT.
                                                                      
     Конфигурирование данных и файлы с расширением ".ICD"
                                                                      
     Чтобы облегчить  развитие  программ конфигурирования - т.е. прог-
рамм, которые модифицируют другие программы, как это делает  DPINST  -
все  модули,  содержащие  типизированные константы, которые, возможно,
потребуется изменять с помощью программ конфигурирования, имеют  вклю-
чаемые файлы  с  расширением ".ICD" (от "Include Configuration Data" -
"включаемые данные конфигурирования"). В большинстве случаев эти файлы
просто содержат таблицы команд. Назначение этих файлов -  предоставить
возможность  для программы конфигурирования включать копии этих таблиц
и другие данные конфигурирования без использования соответствующих мо-
дулей. Пример, поясняющий, как можно использовать файлы с  расширением
"ICD", приведен в подразделе, описывающем DPINST.PAS.
                                                                      
     Директивы условной компиляции
                                                                      
     Вполне понятно,  что  в  такой  крупной  библиотеке,  как  Object

                                 - 70 -
Professional, большинство модулей будет иметь очень  много  возможнос-
тей, которые Вам не понадобятся в данной программе. Чаще всего эти ха-
рактерные  особенности модулей состоят из процедур, функций и методов,
которые могут быть исключены "интеллектуальным компоновщиком"  ("smart
linker") во время компилирования Вашей программы. Однако в других слу-
чаях само существование этих средств вызывает необходимость "прикомпо-
новки" текста подпрограммы, что приводит к большему увеличению размера
программы  по сравнению с необходимым размером. Чтобы решить эту проб-
лему, мы указали ряд директив условной компиляции, которые могут  бло-
кировать эти средства и предотвращать "прикомпоновку" соответствующего
текста подпрограмм.
                                                                      
     Существуют также  такие случаи, когда конкретное средство не тре-
бует "прикомпоновки" текста программы значительного  размера,  но  оно
в определенных ситуациях вызывает нежелательный режим выполнения прог-
раммы. Для  решения этой проблемы в тех случаях, когда отсутствует бо-
лее приемлемое решение, также используются директивы условной компиля-
ции.
                                                                      
     Все эти  директивы  условной  компиляции  можно  найти  в   файле
OPDEFINE.INC, который  включен в каждый модуль в библиотеке. В некото-
рых случаях директива там определена; в других же случаях она в  файле
присутствует, но  заблокирована путем простановки точки перед директи-
вой $DEFINE, как показано ниже:
                                                                      
     {.$DEFINE Некоторая_Директива}
                                                                      
     Чтобы сделать активной директиву, которая по умолчанию не опреде-
лена, следует  загрузить файл OPDEFINE.INC в редактор и удалить точку,
стоящую перед символом "$". Чтобы заблокировать директиву, которая оп-
ределена, необходимо вставить точку перед этим символом. И в том, и  в
другом случае  Вам  придется  после  редактирования файла OPDEFINE.INC
повторно откомпилировать всю библиотеку. Наилучшим способом для  этого
было бы  использование поставляемого файла OPRO.MAK в сочетании с сер-
висной программой MAKE фирмы Borland. Для  получения  более  подробных
сведений обратитесь  к  разделу "Установка системы и программная наст-
ройка", имеющемуся во введении (глава 1).

                                 - 71 -
                                                                      
     Ниже приводится список в алфавитном порядке всех директив  услов-
ной компиляции,  находящихся в файле OPDEFINE.INC. В каждом случае, за
исключением первой директивы, в первой строке записи приведено имя ди-
рективы, а вторая и последующие строки показывают состояние  этой  ди-
рективы по умолчанию ("определена" или "не определена") и дают краткое
описание ее действия.
                                                                      
     $N-
     Эта директива устанавливает, определен ли в модуле  OPSTRING  тип
"Float" (с  плавающей точкой) как "Extended" (расширенный), если уста-
новлено значение  "$N+",  или  "Real"  (действительный)  при  значении
"$N-". Эта директива также управляет включением определенных методов в
различные модули,  которые  могут быть применимы только к числовым ти-
пам, обрабатываемым с помощью сопроцессора 8087.
                                              
     FastDispose
     Определена. Эта  директива  не  должна  быть определена, если для
программы, вызывающей модуль OPSORT, требуется осуществить  размещение
динамически распределяемой области или ее освобождение в то время, по-
ка происходит процесс сортировки - т.е. при выполнении процедур сорти-
ровки, которые  указаны пользователем. При больших объемах сортируемых
массивов в том случае, если размер элемента превышает 4 байта,  дирек-
тива FastDispose обнаруживает существенную разницу в скорости освобож-
дения динамически  распределяемой области в момент завершения процесса
сортировки. Для получения подробных сведений обратитесь  к  документа-
ции, описывающей модуль OPSORT.
                                                                      
     FourByteDates
     Определена. Если эта директива определена, то в модуле OPDATE да-
ты хранятся в виде "длинного целого" (Longint),  обеспечивая  диапазон
от 01/01/1600 - 12/31/3999. Если она не определена, то даты хранятся в
виде "слов" (Word), предоставляя диапазон 01/01/1900 - 12/31/2078. Для
получения  подробных  сведений  обратитесь к документации, описывающей
модуль OPDATE.
                                                                      
     InitAllUnits

                                 - 72 -
     Определена. Эта директива обеспечивает наличие  в  каждом  модуле
блока  инициализации, даже в тех случаях, когда эти модули не содержат
никакого действительного текста программы для инициализации.  Добавле-
ние  этих  блоков помогает обрабатывать ошибку в Turbo Debugger версии
1.5, что запрещает отладчику размещать символьную информацию для опре-
деленных модулей, если весь текст одного из модулей в  программе  были
удален  "интеллектуальным  компоновщиком". Для исправления этой ошибки
фирма Borland располагает простой "заплатой" (прим. перев.:  "заплата"
-  это исправление, вносимое не в текст на языке программирования, а в
объектную программу  в виде набора машинных команд), и если Вы исполь-
зуете  эту  "заплату",   Вам   потребуется   заблокировать   директиву
InitAllUnits и повторно откомпилировать все модули в библиотеке.
                                                                      
     PickListFields
     Определена. Эта директива делает доступной  поддержку  полей  для
списков подбора в модуле OPENTRY. Отметим, что если эта  директива  не
определена,  то некоторые из демонстрационных программ  откомпи-
лировать невозможно.
                                                                      
     ThwartSideKick
     Определена. Если эта директива  определена,  то  модули  OPTSR  и
OPSWAP пытаются помешать резидентной программе SideKick. Это означает,
что  они  пытаются  обойти  блок программы обработки прерывания INT $8
(отметка времени - "clock tick") в SideKick, в результате чего  стано-
вится небезопасным загружать после SideKick другие программы типа TSR.
Для получения подробных сведений обратитесь к документации,  описываю-
щей модуль OPTSR.
                                                                      
     UseAdjustableWindows
     Определена. Эта  директива  включает  в  модуле  OPWINDOW  методы
AdjustWindow,  ResizeWindow, MoveWindow, а также некоторые другие. От-
метим, что если эта директива не определена, то некоторые из  демонст-
рационных программ откомпилировать невозможно.
                                                                      
     UseBCD
     Не определена.  Эта  директива  обеспечивает  в  модулях OPEDIT и
OPENTRY поддержку редактирования переменных, представленных  в  двоич-

                                 - 73 -
но-десятичном коде (BCD), а также их печать с помощью модуля OPFORM.
                                                                      
     UseCrt
     Не определена.  Эта  директива  определяет, был ли откомпилирован
модуль OPCRT таким образом,чтобы он мог не конфликтовать со  стандарт-
ным модулем  CRT  системы  Turbo Pascal. Обычно в том случае, если эта
директива определена, это ничего не дает, кроме того,  что  становится
занятым некоторое  простанство в тексте программы. Это бывает полезным
только в тех случаях, когда Ваша программа содержит модуль, ИСПОЛЬЗУЮ-
ЩИЙ модуль CRT, и у Вас нет для этого модуля исходной  программы.  Для
получения  подробных  сведений  обратитесь к документации, описывающей
модуль OPСRT.
                                                                      
     UseDates
     Определена. Эта директива обеспечивает в модулях OPEDIT и OPENTRY
поддержку  редактирования  переменных, характеризующих дату и время, а
также их печать с помощью модуля OPFORM. Она также включает  некоторые
опции  в  модуле OPDIR. Отметим, что если эта директива не определена,
то некоторые из демонстрационных программ откомпилировать невозможно.
                                                                      
     UseHotSpots
     Определена. Эта  директива обеспечивает поддержку "горячих участ-
ков" в модуле OPWINDOW и во всех модулях, которые от него зависят. От-
метим, что если эта директива не определена, то некоторые из  демонст-
рационных программ откомпилировать невозможно.
                                                                      
                                                                      
     UseMouse
     Определена. Эта директива обеспечивает поддержку "мыши"  во  всех
модулях, которые  этот  манипулятор  используют, а также в большинстве
демонстрационных программ.
                                                                      
     UseScrollBars
     Определена. Эта директива обеспечивает поддержку линейки прокрут-
ки в модуле OPWINDOW и во всех модулях, которые от него зависят. Отме-
тим,  что если эта директива не определена, то некоторые из демонстра-
ционных программ откомпилировать невозможно.

                                 - 74 -
                                                                      
     UseShadows
     Определена. Эта директива обеспечивает поддержку теней  в  модуле
OPWINDOW.  Отметим, что если эта директива не определена, то некоторые
из демонстрационных программ откомпилировать невозможно.
                                                                      
