Назначает канал Visual FoxPro существующему файлу.
FCHAN _FOpen(char FAR *filename, int mode) char FAR *filename; /* Имя существующего файла. */ int mode; /* Опция режима. */ |
Примечания
Допустимы следующие опции mode: FO_READONLY, FO_WRITEONLY, and FO_READWRITE. _FOpen( ) открывает файл в режиме эксклюзивного доступа. _FOpen( ) возвращает канал файла, если файл был успешно открыт, в противном случа - 1.
Для получения дополнительной информации о том, как создавать библиотеку API и интегрировать её в Visual FoxPro, смотрите Доступ к API Visual FoxPro.
Пример
В следующем примере создается тестовый файл. Затем программа открывает этот файл в режиме FO_READONLY и пытается произвести в него запись. В результате _FError( ) возвращает код ошибки - "Access denied". После этого программа открывает тестовый файл в режиме FO_WRITEONLY и пытается прочитать его. И вновь _FError( ) возвращает код 5.
Код Visual FoxPro
Copy Code | |
|---|---|
SET LIBRARY TO FOPEN | |
Код C
Copy Code | |
|---|---|
#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
_PutValue(&val);
}
#define BUFFSIZE 256
static char lineBuffer[BUFFSIZE];
FAR Example(ParamBlk FAR *parm)
{
FCHAN fchan;
fchan = _FCreate("temp.tmp", FC_NORMAL);
_FCHSize(fchan, 8192);
_FClose(fchan);
fchan = _FOpen("temp.tmp", FO_READONLY);
_FPuts(fchan, "Hello, world");
_PutStr("\nAttempt to _FPuts() to file _FOpen()d FO_READONLY");
_PutStr("\n_FError() ="); putLong(_FError());
_FClose(fchan);
fchan = _FOpen("temp.tmp", FO_WRITEONLY);
_FGets(fchan, lineBuffer, BUFFSIZE);
_PutStr("\nAttempt to _FGets() from file _FOpen()d FO_WRITEONLY");
_PutStr("\n_FError() ="); putLong(_FError());
_FClose(fchan);
}
FoxInfo myFoxInfo[] = {
{"FOPEN", (FPFI) Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
}; | |