Консультация № 158008
18.01.2009, 01:27
0.00 руб.
18.01.2009, 06:26
0 4 0
Здравствйет ув. эксперты.

Вопрос по поводу Delphi 2009
Пытаюсь сохранить набор строк код в приложении.
Вылетает ошибка EEncodeError Invalid Code Page
Как использовать произвольную кодовую страницу?


Приложение:
Memo.SaveToFile(FileName, TEncoding.GetEncoding(1200));

Обсуждение

давно
Мастер-Эксперт
425
4118
18.01.2009, 05:55
общий
SaveToFile - это метод какого-то компонента. Не сочтите за труд, голубчик, озвучьте пожалуйста, каким именно компонентом Вы пользуетесь.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
давно
Студент
15716
139
18.01.2009, 06:20
общий
TMemo
Неизвестный
18.01.2009, 11:08
общий
По информации с форумов CodeGear (URL >>) метод GetEncoding вызывает системную функцию GetCPInfo, и, если та выдает False в качестве результата, то генерируется указанная ошибка.
GetCPInfo выдает False в том случае, когда запрашиваемая кодовая страница не установлена в системе или недоступна.
На сайте MSDN есть список идентификаторов кодовых страниц: Code Page Identifiers. Вот что написано для страницы с идентификатором 1200:
1200 - utf-16 - Unicode UTF-16, little endian byte order (BMP of ISO 10646); available only to managed applications

Если я правильно понял статью "A Brief Introduction to Managed Applications", то под "managed applications" подразумеваются .NET приложения.

Судя по всему, у Вас либо не установлена запрашиваемая кодовая страница, либо Ваше приложение не относится к managed-приложениям, отчего кодовая страница с id=1200 становится недоступной.

Добавлено @ 18.01.2009 11:13 (МСК):
Если Вам нужна кодовая страница UTF-16, то, в соответствии с рекомендациями CodeGear, следует применять свойство TEncoding.Unicode:
Delphi в мире Юникода, часть II: новые возможности RTL и классы для поддержки Юникода
давно
Студент
15716
139
18.01.2009, 17:42
общий
Denisss
Спасибо, отличный, подробный ответ. Я с англ. плохо дружу поэтому поиск информации на англ. языку очень ограничен, а по D2009 она почти вся на англ.
Форма ответа