

             ТЕХНИЧЕСКОЕ ОПИСАНИЕ НАБОРА ИНСТРУМЕНТАЛЬНЫХ
             СРЕДСТВ  R_FOX KIT И ИНСТРУКЦИЯ ПРОГРАММИСТА

       Настоящий документ описывает комплекс инструментальных средств
функциональной руссификации FoxPro - R_FOX KIT.  Комплектность  R_FOX
KIT и условия его поставки описаны в файле README.TXT.





                       ОГЛАВЛЕНИЕ

1. Особенности R_FOX KIT и отличия его от подобных средств
2. Кодировочные таблицы и индексирование
3. Резидентный драйвер R_FOX.COM
    3.1. Командные ключи драйвера
    3.2. Дополнение списка задач ( ключ -t ).
    3.3. Освобождение памяти и выгрузка драйвера ( ключ -u ).
    3.4. Установка рабочей версии драйвера ( ключ -i ).
4. Демонстрационные примеры.

        1. ОСОБЕННОСТИ R_FOX KIT И ОТЛИЧИЯ ЕГО ОТ ПОДОБНЫХ СРЕДСТВ

       Всем программистам, работающим на FoxPro, так или иначе прихо-
дилось сталкиваться с проблемой ее неприспособленности к русскому ал-
фавиту в альтернативной кодировке - русская буква  'H'  не вводится с
клавиатуры, т.к. ее коду ASCII соответствует код  "мягкого"  перевода
строки.
       Существует ряд программных средств для решения  этой проблемы,
которые можно разделить на две группы:
       - резидентные драйверы, обрабатывающие чтение буфера клавиату-
         ры и заменяющие русскую  'Н' ( ASCII 141 )  на англйскую 'H'
         ( ASCII 72 ).
       - средства для изменения кода задач, входящих в состав FoxPro.
       Резидентные драйверы просты в разработке и более распростране-
ны, однако имеют существенный недостаток  -  замена  букв  происходит
при любом клавиатурном вводе, в т.ч. при работе текстовых редакторов;
после чего в документе, подготовленном вами и  переданном  на  другой
компьютер, будет затруднительно использовать  программы  контекстного
поиска.
       Средства для изменения  программного кода не выдерживают ника-
кой критики с точки зрения лицензионного и авторского права и являют-
ся чистым пиратством, к тому же при выходе  очередной  версии  FoxPro
проблема появляется вновь.
       R_FOX KIT решает проблему ввода русской  'Н' посредством рези-
дентного драйвера, отслеживающего запуск задач и  загрузки  оверлеев,
благодаря чему замена букв производится только во время работы FoxPro
и приложений, созданных с его помощью. Для всех остальных задач драй-
вер R_FOX прозрачен и не производит никаких действий.



             2. КОДИРОВОЧНЫЕ ТАБЛИЦЫ И ИНДЕКСИРОВАНИЕ.

        Для работы с национальными  алфавитами FoxPro включает в себя
функцию  SYS(15) и кодировочную таблицу для основных европейских язы-
ков EUROPEAN.MEM. К сожалению, данная таблица не поддерживает русско-
го алфавита, что затрудняет  правильное  индексирование по символьным
русскоязычным полям.
        В результате замены русской 'Н' на английскую, при индексиро-
вании/сортировке по символьным полям порядок следования  будет выгля-
деть как: Н,А,Б,В ..., что неприемлемо для коммерческого программного
продукта. Для обеспечения правильной сортировки/индексирования  R_FOX
KIT предоставляет две кодировочные таблицы:

     R_FOX.MEM    - для чувствительной к регистру  сортировки ( поря-
                    док следования А,Б,В...М,Н,...Э,Ю,Я,а,б,...э,ю,я)
     R_FOX_IC.MEM - для нечувствительной к регистру сортировки (поря-
                    док следования А,а,Б,б,В,в...Э,э,Ю,ю,Я,я ).

        Для работы с этими таблицами они должны быть загружены в опе-
ративную память FoxPro командой RESTORE (см. описание команд FoxPro).
Для составления выражения индексирования/сортировки  нужно  использо-
вать функцию SYS(15).
        R_FOX KIT  содержит  демонстрационные  примеры,  показывающие
приемы работы с кодировочными таблицами ( см.раздел 4 настоящей инст-
рукции ).
       ДОПОЛНИТЕЛЬНАЯ ВОЗМОЖНОСТЬ: SYS( 15, R_FOX_IC, ... ) может ис-
пользоваться как аналог функции LOWER() для  обработки  русскоязычных
символьных переменных.


                3. РЕЗИДЕНТНЫЙ ДРАЙВЕР R_FOX.COM

        Резидентный драйвер R_FOX.COM должен быть загружен  в  память
до момента запуска FoxPro. Желательно загрузить его после  экранных и
клавиатурных драйверов. Оптимальной является загрузка из AUTOEXEC.BAT,
загрузка из командной оболочки типа NC  нежелательна, т.к.  при  этом
происходит фрагментация памяти.

                3.1. Командные ключи драйвера

       Драйвер R_FOX может быть запущен со следующими командными клю-
чами:
       R_FOX                  Загрузка драйвера в оперативную память
                              с активацией по умолчанию
       R_FOX -Tсписок задач   Загрузка драйвера в оперативную память
                              с дополнительным списком активации
       R_FOX -U               Удаление драйвера из памяти
       R_FOX -I               Установка рабочей версии драйвера

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

                3.2. Дополнение списка задач ( ключ -t ).

        Драйвер R_FOX производит замену русской 'H' на аналогичную по
виду английскую букву только во время выполнения  приложений  FoxPro.
Для этого драйвер отслеживает запуск и завершение задач, а также заг-
рузку оверлеев. При запуске драйвера без ключа -Т, процесс замены ак-
тивируется загрузкой следующих задач:
        - FOX.EXE
        - FOXS.EXE
        - FOXL.EXE
        - FOXR.EXE
        - FOXPRO.EXE
        - FOXPROX.EXE
        - FOXPROL.EXE
        - FOXPROLX.EXE
        - FOXDOC.EXE
что обеспечивает функционирование драйвера во время выполнения прило-
жений в виде файлов *.PRG, *.FXP, *.APP.
        Помимо этого драйвер контролирует  обращения к файлам внешних
оверлеев FOXPRO.ESO и FOXPRO.ESL, что  обеспечивает  включение его на
время выполнения *.EXE-файлов формата  COMPACT,  созданных с  помощью
FoxPro Distribution Kit.
        Однако драйвер не распознает *.EXE-файлы формата  STANDALONE,
т.к. они не вызывают задач FoxPro и не обращаются к внешним оверлеям.
Для корректного взаимодействия драйвера и STANDALONE задач необходимо
загружать драйвер с ключом -Т (дополнение списка задач).
        Пример командной строки:

            R_FOX -Tsklad.exe kadry.exe zarplata.exe

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


    3.3. Освобождение памяти и выгрузка драйвера ( ключ -u ).

        Выгрузка драйвера имеет смысл в двух случаях:
          - при критической нехватке  оперативной памяти ( освобожда-
            ется около 1 Кбайт )
          - при необходимости изменить список дополнительных задач.
        Выгрузка осуществляется командной строкой:

             R_FOX -U

        В том случае, если позднее драйвера R_FOX были  загружены ре-
зидентные программы, включающие в себя  обработчики  прерываний  08h
(таймер), 16h (сервис клавиатуры), 21h (сервис DOS), 2Fh (мультиплек-
сное), выгрузка не осуществляется и драйвер сообщает об ошибке.
       Данные обработчики прерываний входят во многие драйверы русси-
фикации клавиатуры, программы фоновой печати  и  командные  оболочки,
обеспечивающие псевдомногозадачность.



           3.4. Установка рабочей версии драйвера ( ключ -i ).

        В состоянии поставки работает как  ДЕМО-версия, о чем сообща-
ется при запуске драйвера. Для преобразования его  в  рабочую  версию
необходимо выполнить следующие действия:
        - если драйвер загружен в оперативную память, выгрузить его
          ( см. описание командного ключа -U ).
        - запустить процесс установки командной строкой
             R_FOX -I
        - записать 8-значный идентификационный код компъютера, сооб-
          щаемый драйвером.
        - получить ответный установочный код ( по тел.(812)213-09-89
          или E-mail gen@bentos.spb.su, Симонин Геннадий Евгеньевич )
        - ввести установочный код.

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


                  4. ДЕМОНСТРАЦИОННЫЕ ПРИМЕРЫ.

        Лучше один раз увидеть исходник, чем сто раз прочитать описа-
ние; поэтому R_FOX KIT включает в себя два демонстрационных примера:
        RFGUID01.PRG - пример использования  регистрозависимой и  ре-
                       гистронезависимой индексации
        RFGUID02.PRG - пример использования  кодировочных  таблиц для
                       индексации по русскоязычным символьным полям.
                       Для показа результатов  индексации  использует
                       RFGUID01.PRG.
       Оба демонстрационных примера требуют наличия в текущем катало-
ге файлов DICT.DBF и DICT.CDX
