Вопрос по FoxPro - вывод данных на русском языке

User avatar
Mak_Sim
Уже с Приветом
Posts: 472
Joined: 09 Aug 2000 09:01
Location: Ташкент -> Силиконовка

Вопрос по FoxPro - вывод данных на русском языке

Post by Mak_Sim »

Задаю вопрос по просьбе моей знакомой из Ташкента. Приложение, написанное на FoxPro DOS, было переведено в Visual FoxPro 6.0 под Windows 98.
При запуске программы меню русское, но данные в окне показывает в непонятном виде. При этом ввод с клавиатуры тоже не работает, как надо. Те же данные, выводимые на экран средствами FoxPro, видны нормально. При первом запуске приложения выводился запрос о кодовой странице, и она ответила 1251.
Может, надо было ответить 866 - для ДОС кодировки?
Или где-то надо указать, что при выводе данных в окне используется кодировка 1251 (и если надо, то догрузить фонты)?
Таити, Таити... Нас и тут неплохо кормят.
User avatar
wolfboy
Уже с Приветом
Posts: 1224
Joined: 24 Feb 2003 07:40

Post by wolfboy »

Вы совершенно правы - при первом включении надо было указать 866 кодовую страницу.
Как бороться - ну, например, воспользоваться программой cpzero ( из каталога tools, кажется, - обнуляет текущую кодовую страницу), и открыть опять.
User avatar
Mak_Sim
Уже с Приветом
Posts: 472
Joined: 09 Aug 2000 09:01
Location: Ташкент -> Силиконовка

Post by Mak_Sim »

Я тут нашел несколько советов по поводу перевода FoxPro проекта из DOS в Windows. Буду признателен, если специалисты скажут свое мнение - что именно надо делать, и в каком порядке.

Совет номер 1.
В свойствах проекта нажми Update Native CodePages и если в списке останутся не 1251 - то значит надо исправлять. Для prg выбирать CodePage нужно в этом же диалоге (станешь на prg/txt/fpw в общем на текстовый файл - станет активным пункт контекстного меню CodePage - там и меняй). Для scx/vcx/dbf/dbc тут изменить ничего нельзя - юзай утилитку CPZERO из папки Tools\CPZERO - там всё расписано как её юзать. После того как поправишь - перекомпили. Про CODEPAGE=1251 в файлике config.fpw не забывай!!! А про COLLATE=RUSSIAN лучше наоборот забыть.

Совет номер 2.
Требуется устранить первую проблему отображения русских букв. Связано это с тем, что в 2.6 файлы в кодовой странице 866. Решение может быть таким: создать новый проект в VFP 6.0, включить в него все PRG файлы, и в Project Info -> Files проставить всем файлам CodePage=866 (Russian MS-DOS). Однако в этом случае, текст преобразованного PRG файла оставляет желать лучшего, потому что по непонятным причинам русский текст искажается (многие буквы не воспринимаются и заменяются различными никому не нужными и всем мешающими символами).
Я рекомендую следующее решение:
Открыть PRG файлы (можно последовательно) в WinWorde, указав кодировку "Кирилица (DOS)". Открытые файлы сохранить в новой папке как текстовые с расширением PRG, но в другом формате (Файл -> Сохранить как -> формат файла = только текст (*.txt) -> ответить ДА на запрос о преобразовании). В этом случае, PRG файлы сразу делаются в кодировке 1251 и русский текст корректен.
Есть возможность не привлекая WinWord и не выходя из Лиса, открыть исходники в редакторе MODI COMM ... AS 866 и сохранить их в Виндовой кодировке ("Save As ...").

Требуется устранить вторую проблему отображения русских букв. Связано это с тем, что в 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
Таити, Таити... Нас и тут неплохо кормят.

Return to “Вопросы и новости IT”