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


Вступление

Целью данной статьи не является пропаганда актуальности устаревшего ПО. Автору хотелось помочь тем, кто по долгу службы вынужден сопровождать досовский софт.

В данной статье я хочу поговорить о СУБД FoxPro, а точнее, о ее досовских версиях.

Так случилось, что множество программ, написанных на фоксе, до сих пор остаются "в строю". Знакомое окно текстового режима можно нередко увидеть в банке, в почтовом отделении, расчетных центрах ЖКХ да и просто в организациях.

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

Давным-давно, когда деревья были большими, а дискеты пятидюймовыми, FoxPro мирно существовал под MS-DOS и радовал своих пользователей. Но время не стоит на месте, на смену ДОСу пришла Win95, а за ней - Win98. Но и тут наши рыжие программы продолжали упорно трудиться, не причиняя лишних проблем своим пользователям и сисадминам.

Следующей популярной ОС, которая заполонила практически все компьютеры, стала Windows XP. И вот тут с нашей СУБД начались проблемы. С одной стороны, XP не так удачно заточен под досовский софт и имеет другую архитектуру, нежели Win9x, с другой, прогресс не стоит на месте, и в железной начинке компьютера появилось много нового - многоядерные процессоры, USB-принтеры и т.д.

Оба этих фактора породили немалое количество разнообразных глюков и проблем. Недаром на форумах частенько можно видеть злобные высказывания в адрес FoxPro с призывом похоронить его окончательно и безвозвратно.

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


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

Первым делом необходимо проверить наличие на компьютере библиотек 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

Первая указывает максимальное число одновременно открытых файлов, вторая - размер буферов.

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


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

Если возникает следующая ситуация - программа запускается, вроде бы как все работает, но время от времени в каком-то определенном месте (например, расчете) или произвольно программа вылетает с ошибкой с надписью о нехватке памяти или отсутствии свободных рабочих областей ("All workareas is in use").

В таком случае обратим внимание на ярлык на рабочем столе, по которому запускается программа. Правый клик по ярлыку - идем в свойства, открываем закладку "Память". Смотрим на параметры "Отображаемая (EMS) память" и "Дополнительная (XMS) память". В этих двух строчках необходимо выставить максимальное значение - 16384 (обычно при создании ярлыка Windows не выделяет этой памяти).


"Маленький экран"

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

У этой проблемы два способа решения, описанные ниже.

Первый способ (стандартный). Ставим в свойствах ярлыка полноэкранный режим. Запускаем программу. Затем нажимаем комбинацию Alt+Enter - программа переходит в оконный режим. Правый клик по синему заголовку окна программы. Идем в свойства. Открываем закладку "Расположение". Параметры "Размер буфера экрана" и "Размер окна" выставляем в 80 на 25 (если у вас стандартный текстовый режим, если другой - поставьте свои параметры).

Нажимаем Ок, появится диалог "Изменения свойств". Выбираем "Сохранить свойства для других окон с тем же именем", нажимаем Ок. Больше ничего не делая, выходим из программы (желательно через меню программы). Все. Теперь при запуске программа будет красиво разворачиваться на весь экран. Способ работает почти всегда, но иногда попадаются компьютеры, на которых этот фокус не проходит. В таком случае переходим к способу 2.

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


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

Приложения MS-DOS в среде Windows NT/2000/XP при печати используют NT-спулер, который ждёт некоторое время (15 секунд по умолчанию), прежде чем передать полученные данные на принтер. Чтобы уменьшить таймаут печати, который задаётся в реестре, открываем REGEDIT и лезем в ветку

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WOW

В строковом параметре "LPT_timeout" установим его значение в "3".

Настройки драйвера принтера трогать не нужно, пусть остаются по умолчанию.

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


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

Этот вопрос для программ на ФоксПро стоит особо остро. Матричные принтеры уже почти не используются, а вот количество лазерных растет как грибы после дождя.

Для решения этой проблемы используются программы, которые перехватывают печать на LPT, преобразуют документ и отправляют уже на USB принтер. Таких программ множество. Но лучше всего для этих целей подходит программа DOSUSB. После установки необходимо поместить ее в автозагрузку или же сделать пользователю ярлык на рабочем столе.

DOS2USB обладает достаточным количеством настроек. Будет необходимо выбрать USB-принтер, настроить размер и тип шрифта, а также установить галочку "Advance Spool".

Среди особенностей программы хочется отметить режим "DMP Print". Он позволяет при подключении матричного принтера по USB эмулировать обыкновенный текстовый режим печати LPT. Что очень удобно: если на компьютере отсутствует или не работает порт LPT, матричный принтер можно подключить по USB (последние модели EPSON это позволяют).


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

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

Чтобы открыть доступ по сети к тому матричному принтеру, на который мы будем печатать, на компьютере, с которого будем печатать, необходимо проделать следующие изменения: в файле autoexec.nt добавить строчку: net use LPT1: \\имя компьютера\сетевое имя принтера, например:

net use LPT1: \\sveta\epsonlx

Если наша фокс-программа запускается через .BAT-файл, то вместо autoexec.nt эту строчку можно добавить прямо в этот bat.


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

При наличии в системе двух- и более ядерных процессоров программы на FoxPro периодически зависают. Происходит это, видимо, из-за того, что Windows пытается распределить код программы на несколько ядер одновременно, и это не очень-то получается. Чтобы этого не происходило, нужно, чтобы система запускала ДОС-программы только на одном ядре CPU.

Для этого необходима утилита imagecfg.exe , с ее помощью нужно пропатчить файл ntvdm.exe. После этого проблемы исчезнут. Можно поступить еще проще - взять готовый пропатченный ntvdm и смело заменить его в системе. Записать в каталоги

\Windows\system32
\Windows\system32\dllcache\

и если есть

\Windows\I386\ 

Правда, ОС через некоторое время отреагирует - на экране появится окно с предупреждением о том, что системные файлы заменены. Отвечаем Windows, что так и нужно, и чтобы она оставила измененный файл. Если на этот вопрос не ответить, то система автоматически без вашего ведома вернет оригинальный ntvdm на место из резервной копии.

Хочется заметить, что можно смело заменять ntvdm одной системы другим, даже если они не совпадают по размеру (SP1, SP2, SP3).


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

Время от времени программа вываливается с красной рамкой - ошибка открытия базы DBF.

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


Программа "съедает" все ресурсы компьютера

Действительно, если свернуть работающую программу или перейти в оконный режим (например, при долгом расчете), то даже на мощном современном компьютере можно ощутить "торможение".

Существуют специальные программы, которые позволяют избавиться от подобного эффекта. Это Resfree и Tame.

Resfree - отечественная разработка, представляет собой один .com файл размером в 488 байт, который необходимо прописать на запуск в autoexec.nt (или же в .bat файл).

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

Вот мы и подошли к концу.

Надеюсь, перечисленные советы будут полезны и помогут существующим программам прожить еще много лет ;)

P.S. Все вышеназванные советы касаются Windows XP. В работе FoxPro на более свежих версиях ОС, например Windows 7, могут быть отличия.

Вячеслав РЫТИКОВ

Версия для печатиВерсия для печати

Рубрики: 

  • 1
  • 2
  • 3
  • 4
  • 5
Всего голосов: 0
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Комментарии

Да! Мы так любим изобретать костыли ))) Предлагаю лучший выход. Использовать оригинальные пентиумы 166! Тогда и не нужно будет всех этих извращений )))
Аватар пользователя Enki
Оптимальная конфигурация 166ММХ / RAM 64 Мб / HDD 8 Гб / сетевая карта на 10 Мбит/с. Что касаемо всяких Active Directory с их DNS, TCP/IP - выжечь напалмом. Пользоваться только DOSом!
Не, ну в какой-нибудь богодельне типо ЖЭСа - эта тема актуальна. Ведь там в принципе на что-то нормальное денег не будет.
Аватар пользователя murka
Ленин тоже жил, но помер! FoxPro это рудимент.
Спасибо за статью. Очень полезная информация. В фоксе масса возможностей и кое-что можно добавить ещё. Можно привести его к виду, очень похожему на windows-приложения. Оппонентам могу сказать, что тоже считаю fox анахронизмом, но чтобы от него уйти, надо как минимум переписать тысячи строк кода.
Аватар пользователя Enki
Да все уже написано. Windows аналогов программ «Смета-Процентовка» вагон, но почему-то пользуются DOS FoxPro. Как можно разумно объяснить использование этого на Селероне 2 Ггц с 1 Гб ОЗУ и 160 Гб веником?! Почему платятся деньги за это? Когда Windows аналоги стоят столько же или дешевле!
Статья подобна капельнице трупу! Зачем оживлять труп!? В нашей стране есть гениальные молодые специалисты по современным языкам программирования. Платите им за разработки современного ПО. Зачем платить этим Франкенштейнам, которые пытаются не дать умереть трупу ФоксПро?! Время ФоксПро ушло! Пора признать это! Идти в ногу с современным миром. А не тащится где-то там в конце. Далее… Продолжая платить и потакать этим Франкенштейнам мы лишаемся молодых программистов. Они уезжают из Беларуси видя, что они тут не востребованы. Хотите оставаться страной 3-го мира с технологиями начало 80х годов? Хотите чтобы молодые специалисты бежали со страны? Хотите повального пьянства и наркомании? Вы этого и добьетесь своим костылестроением!
Круто. Особенно насчёт повального пьянства и наркомании среди программистов -)
Аватар пользователя Enki
Ничего смешного тут нету. Плакать надо от нашей отсталости. Мы первые только в одном, в костылестроении!
Аватар пользователя eu6pc
Согласен,Рома. Витебск - до сих пор все ЖЭУ, почтовые отделения (где я бываю), и даже кассы беларусбанка - вижу досовское окно а-ля фокс-про. Программисты талантливые есть, согласен - но приди у нас на госпредприятие - будешь получать около 1 млн руб. Много желающих будет пойти на такую ЗП, переписывать досовский софт ? =)