Создает переменную или массив.
NTI _NewVar(char FAR *name, Locator FAR *loc, int flag) char FAR *name; /* Имя переменной. */ Locator FAR *loc; /* Местоположение. */ int flag; /* Область действия. */ |
Примечания
Определение типа NTI поддерживает индекс таблицы имен. Смотрите Процедура библиотеки API _NameTableIndex( ) для получения дополнительной информации об использовании индекса таблицы имен.
Имя переменной или массива должно подчиняться стандартным правилам именования переменных, принятым в Visual FoxPro. Новая переменная инициализируется логическим значением "ложь".
Установка поля l_subs структуры Locator определяет тип переменной или массива:
-
0 – скалярная переменная
-
1 – одномерный массив размером l_sub1
-
2 – двумерный массив размером l_sub1 на l_sub2
В качестве параметра flag можно использовать NV_PUBLIC или NV_PRIVATE. Переменные типа NV_PRIVATE создаются так, как они создавались бы в программе Visual FoxPro, вызвавшей данную внешнюю программу.
Если _NewVar( ) ) успешно создала переменную, в поле l_NTI заносится неотрицательный номер NTI созданной переменной и _NewVar( ) возвращает этот номер. Если _NewVar( ) завершается неудачно, возвращается отрицательное число, абсолютное значение которого представляет собой внутренний номер ошибки Visual FoxPro.
Для получения дополнительной информации о том, как создавать библиотеку API и интегрировать её в Visual FoxPro, смотрите Доступ к API Visual FoxPro.
Пример
В следующем примере _NewVar( ) используется для создания трех переменных.
Код Visual FoxPro
![]() | |
---|---|
SET LIBRARY TO NEWVAR * * As defined in "pro_ext.h" * #define NV_PUBLIC 0 #define NV_PRIVATE 1 = xNewVar('var', 0, 0, 0, NV_PUBLIC) DISPLAY MEMORY LIKE var = xNewVar('onedim', 1, 5, 0, NV_PUBLIC) DISPLAY MEMORY LIKE onedim = xNewVar('twodim', 2, 5, 6, NV_PUBLIC) DISPLAY MEMORY LIKE twodim |
Код C
![]() | |
---|---|
#include <pro_ext.h> void FAR NewVarEx(ParamBlk FAR *parm) { char FAR *varName; Locator loc; int flag; int retValue; // Null terminate character string if (!_SetHandSize(parm->p[0].val.ev_handle, parm->p[0].val.ev_length+1)) { _Error(182); // "Insufficient memory" } _HLock(parm->p[0].val.ev_handle); varName = (char FAR *) _HandToPtr(parm->p[0].val.ev_handle); varName[parm->p[0].val.ev_length] = '\0'; loc.l_subs = parm->p[1].val.ev_long; loc.l_sub1 = parm->p[2].val.ev_long; loc.l_sub2 = parm->p[3].val.ev_long; flag = parm->p[4].val.ev_long; if ((retValue = _NewVar(varName, &loc, flag)) < 0) { // _NewVar() returns negative Visual FoxPro error number _Error(-retValue); } _HUnLock(parm->p[0].val.ev_handle); } FoxInfo myFoxInfo[] = { {"XNEWVAR", (FPFI) NewVarEx, 5, "C,I,I,I,I"}, }; FoxTable _FoxTable = { (FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo }; |
Смотрите также
Справочное руководство
Процедура библиотеки API _ALen( )Процедура библиотеки API _FindVar( )
Процедура библиотеки API _Load( )
Процедура библиотеки API _NameTableIndex( )
Процедура библиотеки API _ObjectRelease( )
Процедура библиотеки API _Store( )
Концепции
Процедуры библиотеки API от A до ZПрочие ресурсы
Доступ к API Visual FoxProПроцедуры библиотеки API по категориям

© Microsoft Corporation. All rights reserved. Microsoft is not reponsible for the contents of the translated help topics.