Распечатать страницу

Команды и функции для кодовых страниц VFP

« Назад

Команда

SET NOCPTRANS TO [FieldName1 [, FieldName2 ...]]

предотвращает изменение кодовой страницы полей, указанных параметром [FieldName1 [, FieldName2 ...]], открытой таблицы.

Поля типа Character (binary) и Memo (binary) в списке полей SET NOCPTRANS указывать не имеет смысла: кодовая страница данных этих полей не меняется по определению.

Команда SET NOCPTRANS TO, вызванная без списка полей, восстанавливает заданный по умолчанию опцией CODEPAGE файла конфигурации вариант изменения кодовой страницы полей.

Команда

SET CPCOMPILE TO [nCodePage]

устанавливает кодовую страницу nCodePage компилируемым программам.

Команда

SET CPDIALOG ON | OFF

управляет появлением диалога Code Page.

Диалог появляется, если монопольно открывается таблица с неопределенной кодовой страницей и SET CPDIALOG установлен в ON. Такая установка команды применяется при разработке приложения; после завершения разработки SET CPDIALOG следует установить в OFF.

Установкой SET CPDIALOG можно также управлять и на вкладке Data диалогового окна Options меню Tools, манипулируя флажком Prompt for code page.

В табл. 3.32 рассмотрены функции, применяемые при работе с кодовыми страницами.

Таблица 3.32

Функции для кодовых страниц

Функция

Описание / примеры

CPCONVERT(
                nCurrentCodePage,
                nNewCodePage,
                cExpression
)

Заменяет текущую кодовую страницу nCurrentCodePage строки cExpression на новую nNewCodePage

CPCURRENT([1 | 2])

Возвращает, если вызвана без параметра:
·              номер кодовой страницы текущей операционной системы, если файл конфигурации не содержит CODEPAGE или если в файле конфигурации указано CODEPAGE = AUTO;
·              номер кодовой страниц, указанный в файле конфигурации посредством CODEPAGE, например:

CODEPAGE = 852

CPCURRENT(1) всегда вернет номер кодовой страницы текущей операционной системы.
CPCURRENT(2) всегда вернет номер кодовой страницы предшествующей операционной системы. Так, если текущая операционная система – это Russian Windows (1251), то CPCURRENT(2) вернет номер кодовой страницы Russian MS-DOS (866)

CPDBF([nWorkArea
                | cTableAlias
])

Возвращает номер кодовой страницы, установленный для открытой таблицы, указанной либо посредством номера рабочей области nWorkArea, либо псевдонима cTableAlias. Если параметр опущен, то берется таблица, открытая в текущей рабочей области

SYS(2300,
                nCodePage
               
[, nAction])

Добавляет или удаляет кодовую страницу nCodePage из списка "Поддержки национальных языков" (ПНЯ). Возвращает символ "1", если кодовая страница находится в списке, или символ "0" – в противном случае.
Кодовая страница добавляется в список, если nAction = 1, и удаляется, если nAction = 0.
Если кодовая страница добавлена в список ПНЯ и ее номер указан в файле конфигурации, и установка SET COLLATE соответствует указанной кодовой странице, то процедуры и команды, поддерживающие национальные языки, обеспечат надлежащую индексацию, сравнение строк и сортировку. По умолчанию в список ПНЯ входят кодовые страницы 874, 932, 936, 949, 950, 1255 и 1256

Пример для SYS(2300).

if CPCurrent( ) = 1251 then

&& Запоминаем текущую кодовую страницу

currentCollate = Set("COLLATE")

set collate to "RUSSIAN"

if Sys(2300, 1251) = "0" then

&& Операция сравнения выполняется с ошибкой

? "F" = "f"                           && Напечатает: .T.

&& Добавляем кодовую страницу 1251 в список ПНЯ

Sys(2300, 1251, 1)

&& Операция сравнения выполняется корректно

? "F" = "f"                           && Напечатает: .F.

&& Удаляем кодовую страницу 1251 из списка ПНЯ

Sys(2300, 1251, 0)

endif

&& Восстанавливаем прежнюю collate-последовательность

set collate to currentCollate

else

MessageBox("Пример показателен, когда установлена кодовая страница 1251!")

endif