_FOpen( ), API-Bibliotheksroutine

Weist einer vorhandenen Datei einen Visual FoxPro-Kanal zu.

FCHAN _FOpen(char FAR *filename, int mode)
char FAR *filename;         /* Name of existing file */
int mode;                     /* Mode option. */

Hinweise

Die folgenden Modusoptionen sind verfügbar: FO_READONLY, FO_WRITEONLY und FO_READWRITE. _FOpen( ) öffnet eine Datei mit exklusivem Zugriff. _FOpen( ) gibt den Dateikanal zurück, wenn die Datei geöffnet wurde. Konnte die Datei nicht geöffnet werden, wird -1 zurückgegeben.

Weitere Informationen zum Erstellen einer API-Bibliothek und ihrer Integration in Visual FoxPro finden Sie unter Zugreifen auf die Visual FoxPro-API.

Beispiel

Im folgenden Beispiel wird eine Testdatei erstellt. Anschließend wird die Datei im FO_READONLY-Modus geöffnet, und es wird versucht, in die Datei zu schreiben. Daraufhin gibt _FError( ) den Wert 5 für Zugriff verweigert zurück. Im nächsten Schritt wird die Datei im FO_WRITEONLY-Modus geöffnet, und es wird versucht, aus der Datei zu lesen. _FError( ) gibt erneut den Wert 5 zurück.

Visual FoxPro-Code

SET LIBRARY TO FOPEN 

C-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
};

Siehe auch

_FClose( ), API-Bibliotheksroutine | _FCreate( ), API-Bibliotheksroutine | _FError( ), API-Bibliotheksroutine | Zugreifen auf die Visual FoxPro-API