![]() |
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум | ![]() |
![]() |
Л и с о в о д ы в с е х с т р а н, о б ъ е д и н я й т е с ь !!! |
Re: Порча переменных окружения в FPD | |||
---|---|---|---|
Igor Korolyov Сообщений: 32274 |
Имелось в виду что "физически" Process Environment устроен по разному в Винде и в Досе. В Винде переменные окружения могут быть юникодными (это определяется при старте процесса - обычно "явно" блок переменных не создают, а наследуют от запускающего процесса - и так по цепочке вплоть до explorer.exe, потому чаще всего юникод и будет использоваться), и уже АПИ функции доступа к ним могут переводить их в ANSI (при использовании *A вариантов функций). В DOS однозначно никакого юникода нет - так что блок переменных обязан быть переведен в ANSI - и уж как именно это будет сделано эмулятором (от чего будет зависеть "кодовая страница" выбранная для перевода), и не повредятся ли при этом не-латинские символы - и составляет суть проблемы. ------------------ WBR, Igor ![]() |
||
Re: Порча переменных окружения в FPD | |||
---|---|---|---|
akvvohinc Сообщений: 2812 Откуда: Москва |
3) после того, как я выполнил CHCP по полному пути - C:\windows\system32\chcp - получил: Текущая кодовая страница: 866 8) ДосБокса нет, запускаю start.bat из TC. 9) рядом с foxprox.EXE точно нет foxprox.PIF 10) _default.pif есть, но не в SYSTEM32, а здесь C:\WINDOWS\ yadi.sk 11) COMSPEC=C:\WINDOWS\SYSTEM32\COMMAND.COM 12) запускаю start.bat руками из TC ![]() |
||
Re: Порча переменных окружения в FPD | |||
---|---|---|---|
andrewk Автор Сообщений: 82 |
Ага, там. Файл скачал, можешь удалять. Ну самый обычный стандартный pif, ссылается на стандартные *.nt. Почему не ищет в system32 – наверное, в связи с тем, о чём я выше писал про PATH. К теме не относится, но раз уж дошли до pif-файлов. Если тебя всё устраивает, то и ладно. У меня рядом с exe свой pif, который ссылается на свои Config.nt и Autoexec.nt. В стандартном Config.nt files=40, чего может сильно не хватать. Стандартный Autoexec.nt запускает mscdexnt.exe и redir.exe, которые не нужны, и устанавливает ненужную SET BLASTER. При этом не запускает русификатор клавиатуры. У меня так, работает под WinXP–Win10: @echo off if not '%FPD%'=='' goto ok rem Если FPD сразу вылетает при запуске: rem в FoxProX.pif прописать полные пути к Autoexec.nt и Config.nt rem про Win10 читай в Запуск.bat rem Текущий каталог во время выполнения Autoexec.nt - C:\ - возможно, это %SystemDrive%\ или %HomeDrive%\ rem К этому моменту кириллица в переменных бесповоротно искаверкана, поэтому переменные, где она может быть, оставлять нет смысла rem Запуск.bat пишет путь к Fox-у в %FPD% и устанавливает %PATH% rem а для запуска вручную пишем здесь rem В PATH оставляем только нужное, чтобы освободить память для переменных окружения на потом set FPD=C:\Rent\Fox set path=%FPD%;%SystemRoot%;%SystemRoot%\system32 :ok lh %FPD%\ResFree.com 1 if exist %FPD%\..\bin\KeyRus.com lh %FPD%\..\bin\KeyRus.com /click=off >nul if not exist %FPD%\..\bin\KeyRus.com lh %SystemRoot%\system32\kb16.com ru lh %SystemRoot%\system32\dosx set FPD= Да, собственно, тема, видимо, себя исчерпала. Как и сказал Игорь, проблема в конвертации NTVDM-ом переменных из юникода. Пока работает запускающий батник, CMD, как нативный виндовый процесс, использует «родные» значения, в юникоде. Вот, например, test.bat: @echo off set A=Вася chcp 1251 set>env1251.txt chcp 866 set>env866.txt set A=В результате получим файлы с правильными текстами в соответствующих кодировках. Ну то есть, и A=Вася, и UserName конвертируются в момент обращения к ним (по SET) в кодовую страницу, выбранную в этот момент (по CHCP). При запуске ntvdm тоже происходит конвертация, но какая-то кривая. Кто это делает: процесс, запускающий ntvdm, или сам ntvdm на старте запрашивает окружение (и либо получает криво, либо сам потом портит), или ntvdm при запуске целевой программы передаёт ей кривое окружение – уже не важно, всё это глубокие внутренности, повлиять на которые, к сожалению, не удалось. ![]() |
||
Re: Порча переменных окружения в FPD | |||
---|---|---|---|
akvvohinc Сообщений: 2812 Откуда: Москва |
Я просто поправил нужным образом эти стандартные файлы, и они используются для всех FPD-программ. ![]() |
||
Re: Порча переменных окружения в FPD | |||
---|---|---|---|
andrewk Автор Сообщений: 82 |
Не, если чисто для себя, то конечно. Я это написал из соображений универсальности, чтоб на чужих компьютерах работало так же, как на моём. ![]() |
||
© 2000-2019 Fox Club  |