Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Проблемы с кодировкой имен файлов


Автор: kami 25.2.2011, 19:13
Доброго времени суток, дамы и господа!
Суть проблемы:
имею приложение, сделанное в D7, запускаю на WinServer 2008 64bit. При запуске:
1) приложение не может найти нужные файлы, если в пути (или имени) файла содержатся русские буквы (выяснил экспериментальным путем)
2) заголовок формы и вся текстовка - крякозябры. За исключением VT (ну, с ним все понятно - оно ж использует WideString).

Пункт 2 не критичен - приложение будет сервисом (но причину понять хотелось бы - кто знает, может у юзверей, которые сидят под Win2k/XP/Vista/Seven будут такие же проблемы)
По пункту 1 - вообще ничего не понимаю. Ну, ладно, отображение - не совпала кодировка, исправлению не подлежит (это ж все ресурсы перекодировать. Или нет?). Но вот имена и пути к файлам... Тем более, что преобразование AnsiString>VT.WideString и обратно работает без проблем...

Собственно - как можно исправить? (Переход на D2009 и выше уже рассматриваю). Админский доступ к серверу имею.

Автор: Snowy 25.2.2011, 21:14
Панель управления - Язык и региональные стандарты - Дополнительно - Русский ?

Автор: kami 25.2.2011, 21:59
Snowy, завтра проверю - из дома доступа к серверу не имею.
Как можно программно получить доступ к этой функции?

Автор: CodeMonkey 25.2.2011, 23:48
Ещё надо учесть, что учётка службы <> учётке пользователя.

http://www.transl-gunsmoker.ru/2010/08/windows-2000.html
http://www.transl-gunsmoker.ru/2010/08/windows-xp2003.html

В общем, тебя ожидают длительные головные боли.

Как исправить программно - смотри на базе какой функции или переменной выполняются кривые перекодировки. 

http://www.transl-gunsmoker.ru/2010/11/%D0%BA%D0%B0%D0%BA-%D0%BE%D0%B1%D1%89%D0%B8%D0%B5-%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D1%8B-%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F.html
http://www.transl-gunsmoker.ru/2010/12/ansi-unicode.html

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

В общем, лучше как можно быстрее убраться с D7 на D2009+.

Автор: kami 26.2.2011, 12:51
Цитата(Snowy @  25.2.2011,  21:14 Найти цитируемый пост)
Панель управления - Язык и региональные стандарты - Дополнительно - Русский ?

Увы - нет. Английский (США). На мой вопрос о перезагрузке сервера после установки "Русский (Россия)" покрутили пальцем у виска и сказали "ай-яй-яй, даже и не думай". Ну да ладно. Хоть админский доступ и есть, но лезть в это самостоятельно не буду - сервер не мой, права админа получил под честное слово "что не буду ерундой маяться и мешать системе глючить".


Цитата(CodeMonkey @  25.2.2011,  23:48 Найти цитируемый пост)
В общем, тебя ожидают длительные головные боли.

Это я уже понял :(
Решение уже принято - 
Цитата(CodeMonkey @  25.2.2011,  23:48 Найти цитируемый пост)
как можно быстрее убраться с D7 на D2009+.

Теперь бы еще грамотно убраться - куча AllocMem, Move, TStream.Write связанных с PChar и string в более чем 20к строк кода...

Автор: CodeMonkey 26.2.2011, 13:30
(а некоторые ещё спрашивают - а нафига нам Unicode? и так всё работает smile )

Автор: kami 26.2.2011, 13:40
CodeMonkey,  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)