DELPHI: EEncodingError - Недопустимая кодовая страница в Windows XP встроена - PullRequest
3 голосов
/ 09 июня 2010

Привет, у меня есть приложение, которое хорошо работает на Windows XP Pro, Windows Visa, Windows 7

Но когда я запускаю его на Windows XP встроенный, он не работает и выдает следующую ошибку:

EEncodingError - Неверная кодовая страница

Когда приложение было создано с Delphi 2006, оно работало на Windows XP со встроенным

** Когда приложение сделано с Delphi 2010, оно не работает ** на Windows XP, встроенной ****

Ответы [ 2 ]

3 голосов
/ 10 июня 2010

Свойство TEncoding.ASCII использует кодовую страницу 20127, которая по умолчанию не установлена ​​в XP Embedded.Вы должны установить его вручную.Класс TEncoding не существует в D2006.

Вы случайно используете Indy 10?Он использует TEncoding.ASCII по умолчанию для своих строковых кодировок.Известно, что именно эта ошибка возникает при использовании Indy в XP Embedded.

0 голосов
/ 09 июня 2010

Когда происходит сбой?При запуске или позже?

Эта ошибка встречается только в одном месте, по крайней мере, в RTL.В SysUtils constructor TMBCSEncoding.Create(CodePage, MBToWCharFlags, WCharToMBFlags: Integer);, который вызывается TEncoding для установки кодировок строк.

Он принимает параметр CodePage и вызывает на нем GetCPInfo , а в случае неудачи вызывает этоисключение.Из документации MSDN и сообщения об исключении, вероятно, происходит то, что ваше приложение пытается использовать строки из многобайтового набора символов, который не поддерживается XP Embedded.Вы делаете что-то необычное со строками или текстовой работой на иностранных языках, которые используют другой алфавит?

...