Опыт перевода проекта из FoxPro 2.6 DOS в VFP 6.0

Опыт перевода проекта из FoxPro 2.6 DOS в VFP 6.0

Опыт перевода проекта из FoxPro 2.6 DOS в VFP 6.0

ОПЫТ ПЕРЕВОДА ПРОЕКТА
из FoxPro 2.6 DOS в Visual FoxPro 6.0

Для чего я это пишу?

Чтение эхо-конференций и конференции Visual FoxPro Club показал, что, несмотря на существование современного средства разработки программ Visual FoxPro 6, многие продолжают программировать на устаревшем (морально и физически) средстве FoxPro 2.6 DOS. Причины различные, углубляться не буду. Но одна из причин, как мне кажется, инерция человеческого мышления, и неохота связываться с трудностями перехода на новое средство. А также кажущиеся огромные трудности.
Да, бесспорно, трудности есть. Особенно, когда это приходится преодолевать самостоятельно. По слухам, существует кое-какая литература, посвященная этой проблеме, но я не сталкивался. Преодолел эти трудности самостоятельно, и теперь возникло желание поделиться решениями.

Замечание Игоря Шанука. В MSDN есть раздел посвященный переводу проектов разработанных на более ранних версиях FoxPro: "Converting from Other Versions of FoxPro" -> "Converting from FoxPro 2.6"

Данные записки предназначены для тех, кто уже хочет, но еще не может, или для тех, кто ну никак не созреет к переходу на VFP 6.0.

Замечание! На самом деле, переход с 2.6 на VFP 6.0 не столь уж и труден. Во всяком случае, задача вполне преодолимая. VFP 6.0 декларирует поддержку всего, созданного в ранних версиях FoxPro. Хотя это и не совсем так, но это мелочи.

Ограничения.

Проект, который я переводил из 2.6 в 6.0, содержит только процедуры и свободные таблицы. То есть, отчеты, запросы, окна и т. п. запрограммированы ручками в процедурах (в файлах PRG).
Предполагается, что VFP 6.0 проинсталлирован и имеются исходные тексты проекта, который переводится. Инсталляция FoxPro 2.6 необязательна.

Порядок перевода.

1. Создаем новую папку.
2. Требуется устранить первую проблему отображения русских букв. Связано это с тем, что в 2.6 файлы в кодовой странице 866.

Решение может быть таким: создать новый проект в VFP 6.0, включить в него все PRG файлы, и в Projekt Info -> Files проставить всем файлам Code Page = 866 (Russian MS-DOS). Однако в этом случае, текст преобразованного PRG файла оставляет желать лучшего, потому что по непонятным причинам русский текст искажается (многие буквы не воспринимаются и заменяются различными никому не нужными и всем мешающими символами).

Я рекомендую следующее решение:

- Открыть PRG файлы (можно последовательно) в WinWorde, указав кодировку – Кирилица (DOS).

- Открытые файлы сохранить в новой папке как текстовые с расширением PRG, но в другом формате (Файл -> Сохранить как –> формат файла = только текст (*.txt) –> ответить ДА на запрос о преобразовании). В этом случае, PRG файлы сразу делаются в кодировке 1251 и русский текст корректен.

Замечание! Работа довольно кропотливая, но она стоит того. В противном случае, см. решение 1, описанное выше, Вам придется просматривать тексты PRG файлов и корректировать все надписи по-русски. Это гораздо больше работы.

Замечание Игоря Шанука. Тут на мой взгляд хорошо бы было уточнить этот момент.Я провел эксперимент:
1. Создал новый файл проекта (в VFP)
2. Добавил в него (вручную) нужные файлы
3. Установил для файлов 866 кодовую страницу (до установки кодовой страницы файл не открывался)

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

Замечание Игоря Шанука. Т.е. фактически подхода два:
a) предоставить FoxPro работать с файлами в исходной кодовой странице
(866),
b) либо предварительно перекодировать файлы в 1251. (В этом случае
можно написать несложную утилиту (на том же FoxPro) которая автоматизирует этот процесс).

4. Требуется устранить вторую проблему отображения русских букв. Связано это с тем, что в 2.6 окна отображают русские буквы шрифтом по умолчанию, и может получиться греко-арабская абракадабра при выполнении проекта.

Для этого необходимо добавить в описание окон наименование [и размер] шрифта, например:

DEFINE WINDOW okno ;
FROM INT((SROW()-19)/2),INT((SCOL()-80)/2) ;
TO INT((SROW()-19)/2)+19,INT((SCOL()-80)/2)+79 ;
TITLE "РЕДАКТИРУЕМЫЕ РЕГИСТРАЦИОННЫЕ ДАННЫЕ" ;
NOFLOAT ;
NOCLOSE ;
NOMINIMIZE ;
DOUBLE ;
COLOR w+/bg,w+/b,gr/n,gr+/w,n+/w,w+/gr,bg+/bg,n+/n,b/bg,w/bg,+ ;

FONT 'Times New Roman', 10

5. Заменить все литеральные константы дат типа {01.01.93} на {^1993-01-01}, т. е. - {^ГГГГ-ММ-ДД}.

Замечание Игоря Шанука. Этого можно не делать, если в VFP установить SET STRICTDATE TO 0. Так же думаю, что полезно привести ссылку на раздел MSDN "Year 2000 Date Support"

6. Добавить соответствующее SET CENTURE

7. Удалить из новой папки все файлы с расширением FXP. Могут случайно попасться FXP файлы для FoxPro 2.6, которые очень сильно будут мешать.

8. Создать новый файл проекта. Включить в него все необходимые PRG файлы и перекомпилировать проект (предполагается, что Вы знаете как включать файлы в проект и как перекомпилировать проект).

9. ВСЕ! Проект можно запускать на выполнение. Однако, для дальнейшей хорошей работы, проект желательно все-таки перепроектировать, а именно – добавить формы, поиграть с размерами и фонтами окон, и т.п.

Примечание! Автор будет благодарен, если кто-нибудь дополнит эти скромные записки материалами по переводу из 2.6 в VFP отчетов, запросов и т.п. прибамбасов.

Автор: ГВК
0

Автор публикации

не в сети 24 года

ГВК

0
Комментарии: 0Публикации: 2Регистрация: 03-10-2000
Оставить комментарий
Авторизация
*
*
Генерация пароля