На главную->Содержание


FoxPro жил, FoxPro жив, FoxPro будет жить!

   В данной статье я хочу поговорить о СУБД FoxPro, а точнее о ее досовских версиях.
   Так случилось, что множество программ, написанных на фоксе, до сих пор остается «в строю». Знакомое окно текстового режима можно нередко увидеть в банке, в почтовом отделении, расчетных центрах ЖКХ да и просто в организациях.
   Сложно объяснить, почему фокс так хорошо прижился на жестких дисках некоторых компьютеров, равно как и сложно понять, почему большая часть компьютерщиков терпеть не может этот программный продукт.
   Давным-давно, когда деревья были большими, а дискеты пятидюймовыми, FoxPro мирно существовал под MS-DOS и радовал своих пользователей. Но время не стоит на месте, на смену ДОСу пришла Win95, а за ней Win98. Но и тут наши рыжие программы продолжали упорно трудиться, не причиняя лишних проблем своим пользователям и сисадминам.
   Следующей популярной ОС, которая заполонила практически все компьютеры, стала Windows XP.
   И вот тут с нашей СУБД начались проблемы. С одной стороны, XP не так удачно заточен под досовский софт и имеет другую архитектуру, нежели Win9x, с другой стороны, прогресс не стоит на месте, и в железной начинке компьютера появилось много нового – многоядерные процессоры, USB-принтеры и т.д.
   Оба этих фактора породили немалое количество разнообразных глюков и проблем. Недаром на форумах частенько можно видеть злобные высказывания в адрес FoxPro, с призывом похоронить его окончательно и безвозвратно.
   Давайте же посмотрим, какие типичные проблемы возникают при работе фокса под Windows XP, и что можно предпринять в данных ситуациях, дабы облегчить себе жизнь:

1. Программа вообще не запускается или запускается с кракозябрами вместо букв.

   Первым делом необходимо проверить наличие на компьютере библиотек FoxPro. Обычно их кладут в какую-нибудь папку, например, C:\Foxpro. Для того чтобы программа могла их найти, необходимо в системном файле
C:\windows\system32\autoexec.nt
   прописать путь к библиотекам, добавив строку
Path=c:\foxpro;
   (разумеется, имя диска и название папки windows могут отличаться).
   Если в программе отсутствует русский язык и буквы отображаются неверно, то необходим драйвер русского языка для MS-DOS, к примеру, keyrus. Его запуск также нужно прописать в autoexec.nt
   Справедливости ради хочется заметить, что обычно драйвер keyrus требуется очень редко, так как Windows XP хорошо справляется с его функциями сама.
   Хочется еще отметить тот момент, что у FoxPro было несколько версий, и библиотеки нужны строго от той версии, на которой написана программа. Различные версии – 2.0, 2.5, 2.6 – несовместимы между собой.
   Также в системном файле C:\windows\system32\config.nt должны присутствовать следующие 2 строки:

FILES=150
BUFFERS=80
   Первая указывает максимальное число одновременно открытых файлов, вторая – размер буферов.
   Собственно, все. Вышеупомянутых действий вполне хватает, чтобы программа запускалась.

2. Нехватка памяти.

   Если возникает следующая ситуация – программа запускается, вроде бы как все работает. Но время от времени в каком-то определенном месте (например, расчете) или произвольно программа вылетает с ошибкой с надписью о нехватке памяти или отсутствии свободных рабочих областей («All workareas is in use»).
   В таком случае – обратим внимание на ярлык на рабочем столе, по которому запускается программа.
   Правый клик по ярлыку – идем в свойства, открываем закладку «Память».
   Смотрим на параметры «Отображаемая (EMS) память» и «Дополнительная (XMS) память». В этих двух строчках необходимо выставить максимальное значение – 16384 (обычно при создании ярлыка Windows не выделяет этой памяти).

3. «Маленький экран».

   При запуске программы она запускается в оконном режиме, или в полноэкранном, но сама программа работает лишь на пол экрана, вторая половина остается пустой. (для текстового режима 80х25).
   У этой проблемы два способа решения:

   – первый способ (стандартный)

   Ставим в свойствах ярлыка полноэкранный режим. Запускаем программу. Затем нажимаем комбинацию Alt+Enter – программа переходит в оконный режим. Правый клик по синему заголовку окна программы. Идем в свойства. Открываем закладку «Расположение». Параметры «Размер буфера экрана» и «Размер окна» выставляем в 80 на 25. (если у вас стандартный текстовый режим, если другой – поставьте свои параметры).
   Нажимаем Ок, появится диалог «Изменения свойств». Выбираем «Сохранить свойства для других окон с тем же именем», нажимаем Ок. Теперь больше ничего не делая выходим из программы (желательно через меню программы). Все. Теперь при запуске программа будет красиво разворачиваться на весь экран. Этот способ работает почти всегда, но иногда попадаются компьютеры, на которых этот фокус не проходит. В таком случае переходим к способу 2.

   – второй способ (если не помог первый).

   Открываем папку программы. Ищем в нем файл CONFIG.FP , если он не найден – создаем его.
   Дописываем туда строчку вида display=VGA25 и сохраняем. Теперь программа будет также работать полноэкранно. Единственный нюанс – скорее всего, понадобится установка драйвера русского языка keyrus.

4. Медленная печать на матричный принтер.

   Приложения MS-DOS в среде Windows NT/2000/XP при печати используют NT-спулер, который ждёт некоторое время (15 секунд по умолчанию), прежде чем передать полученные данные на принтер. Чтобы уменьшить таймаут печати, который задаётся в реестре, открываем REGEDIT и лезем в ветку
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WOW
   В строковом параметре «LPT_timeout» установим его значение в «3».
   Настройки драйвера принтера трогать не нужно, пусть остаются по умолчанию.
   Кстати, если в системе установлено несколько принтеров, то обязательно по умолчанию должен быть установлен матричный.

5. Печать на USB принтер (локально или по сети)

   Этот вопрос для программ на ФоксПро стоит особо остро. Матричные принтеры уже почти не используются, а вот количество лазерных растет как грибы после дождя.
DOS2USB
DOS2USB
Для решения этой проблемы используются программы, которые пере­хватывают печать на LPT, пре­обра­зуют доку­мент и отправляют уже на USB принтер. Таких программ множество. Но лучше всего для этих целей подходит программа DOSUSB. После установки необходимо поместить ее в автозагрузку, или же сделать пользователю ярлык на рабочем столе.
   DOS2USB обладает доста­точным коли­чеством на­строек. Будет необходимо выбрать USB-принтер, настроить размер и тип шрифта, а также установить галочку «Advance Spool».
   Среди особенностей программы хочется отметить режим «DMP Print». Он позволяет при подключении матричного принтера по USB эмулировать обыкновенный текстовый режим печати LPT. Что очень удобно: если на компьютере отсутствует или не работает порт LPT, матричный принтер можно подключить по USB. (последние модели EPSON это позволяют)

6. Печать на сетевой матричный принтер.

   Если необходимо печатать по сети на матричный принтер, то есть и такая возможность.
   Открыть доступ по сети к тому матричному принтеру, на который мы будем печатать. На компьютере, с которого будем печатать, необходимо проделать следующие изменения: в файле autoexec.nt добавить строчку: net use LPT1: \\имя компьютера\сетевое имя принтера, например:
net use LPT1: \\sveta\epsonlx-
   Если наша фокс-программа запускается через .BAT-файл, то вместо autoexec.nt эту строчку можно добавить прямо в этот bat.

7. Зависание программы на многоядерных процессорах.

   При наличии в системе двух- и более ядерных процессоров программы на FoxPro периодически зависают. Происходит это, видимо, из-за того, что Windows пытается распределить код программы на несколько ядер одновременно, и это не очень-то получается. Чтобы этого не происходило, нужно, чтобы система запускала ДОС-программы только на одном ядре CPU.
   Для этого необходима утилита imagecfg.exe , с ее помощью нужно пропатчить файл ntvdm.exe. После этого проблемы исчезнут. Можно поступить еще проще — взять готовый пропатченный ntvdm и смело заменить его в системе. Записать в каталоги
\Windows\system32
\Windows\system32\dllcache\
и если есть \Windows\I386\
   Правда ОС через некоторое время отреагирует – на экране появится окно с предупреждением о том, что системные файлы заменены.
   Отвечаем Windows что так и нужно, и чтобы она оставила измененный файл. Если на этот вопрос не ответить, то система автоматически без вашего ведома вернет оригинальный ntvdm на место из резервной копии.
   Хочется заметить, что можно смело заменять ntvdm одной системы другим, даже если они не совпадают по размеру (SP1,SP2,SP3).

8. Невозможно открыть DBF.

   Время от времени программа вываливается с красной рамкой – ошибка открытия базы DBF.
   Данное чудо было замечено на компьютере, где установлен Антивирус Касперского. Видимо, программа и антивирус не могут поделить доступ к файлу. Чтобы избежать проблемы – необходимо добавить файлы DBF в список исключений (чтобы антивирус их не проверял) или же добавить программу в доверенную зону антивируса.

9. Программа «съедает» все ресурсы компьютера.

   Действительно, если свернуть работающую программу или перейти в оконный режим (например, при долгом расчете), то даже на мощном современном компьютере можно ощутить «торможение».
   Существуют специальные программы, которые позволяют избавиться от подобного эффекта. Это Resfree и Tame.
   Resfree – отечественная разработка, представляет собой один .com файл размером в 488 байт, который необходимо прописать на запуск в autoexec.nt (или же в .bat файл).
   Tame – более навороченный зарубежный аналог. Программа устанавливается автоматически и имеет дополнительные функции, вроде более тонких настроек, мониторинга программ и т.п.
   Вот мы и подошли к концу.
   Надеюсь, перечисленные советы будут полезны и помогут существующим программам прожить еще много лет ;)


Вячеслав Рытиков (eu6pc)

На главную->Содержание