Rambler's Top100

(c)2009-2017 openinfotech.ru

СУБД HyTech

Документация
Функция htReadCoder - Считать кодификатор

htReadCoder - Считать кодификатор

Назначение:

Функция предназначена для чтения данных кодификатора, например, для организации меню, содержащего список возможных значений и т.п. Возможно чтение в прямом и обратном порядке. При чтении в прямом порядке данные кодификатора представлены в виде пар {ключ:толкование}, сортированных в порядке возрастания значений ключа. При чтении в обратном порядке данные представлены в виде пар {толкование:ключ} и отсортированы в порядке возрастания значений толкования.

Размер буфер, необходимого для чтения данных кодификатора можно узнать по результатам вызова функции htCoderInfo. Этот размер определяется как произведение длины элемента кодификатора на их число.

В случае успешного завершения, буфер будет заполнен данными кодификатора.

Прототип:

 int HTAPI htReadCoder(
	CHANDLE hCoder, /* Обработчик кодификатора */
	void far *fpBuf, /* Буфер для чтения */
	int bInverse /* !=0 вывод в обратном порядке */
 );

Параметры

hCoder
определяет обработчик кодификатора. Этот обработчик должен быть получен функцией htLoadCoder
fpBuf
задает адрес буфера, выделенного в программе, для чтения данных кодификатора. Размер буфера должен быть не менее длины кодификатора (см.выше).
bInverse
задает порядок чтения. Значения, отличные от нуля, задают обратный порядок чтения (см.выше).

Результат:

0 при успешном завершении
отрицательное число код ошибки

Пример.

Загрузить кодификатор и извлечь его данные для построения окна выбора значений.

 typedef struct tagSEX { /* Структура записи таблицы полов */
     char	sex;	 /* Пол (кодированный) */
     char name[7]; /* Полное наименование пола */
 } SEX;
 CHANDLE hSex;
 CODINF sInfo;
 int rc;
 int anFields[] = { 1, 2 };
 char *Buff;
 . . .
 /* Загрузить кодификатор */
 htLoadCoder( "\\table\\sex", NULL, TAB_SHARE, anFields,
		 sizeof(anFields)/sizeof(int), &hSex );
 /* Получить его характеристики */
 htCoderInfo( hSex, &sInfo );
 /* Буфер для чтения данных */
 Buff = malloc( sInfo.wItemCnt * sInfo.nItemLen );
 /* Считать данные кодификатора в обратном порядке */
 htReadCoder( hSex, Buff, 1 );
 . . .
 /* Организовать окно для выбора значений ключа по его толкованию */
 . . .