# FSEEK()

Positions the file pointer in a file.

Syntax

  FSEEK( <nHandle>, <nOffset>, [<nOrigin>] ) --> nPosition

Arguments

  <nHandle> DOS file handle.
  <nOffset> The number of bytes to move.
  <nOrigin> The relative position in the file.

Returns

  <nPosition> the current position relative to begin-of-file

Description

  This function sets the file pointer in the file whose DOS file handle is <nHandle> and moves the file pointer by <expN2> bytes from the file position designated by <nOrigin>. The returned value is the relative position of the file pointer to the beginning-of-file marker once the operation has been completed.
  <nHandle> is the file handle number. It is obtained from the FOPEN() or FCREATE() function.
  The value of <nOffSet> is the number of bytes to move the file pointer from the position determined by <nOrigin>.The value of <nOffset> may be a negative number, suggesting backward movement.
  The value of <nOrigin> designates the starting point from which the file pointer should he moved, as shown in the following table:

<nOrigin> | fileio.ch | File position
0 | FS_SET | Beginning of file
1 | FS_RELATIVE | Current file pointer position
2 | FS_END | End of file

  If a value is not provided for <nOrigin>, it defaults to 0 and moves the file pointer from the beginning of the file.

Examples

          // here is a function that read one text line from an open file

          // nH = file handle obtained from FOPEN()
          // cB = a string buffer passed-by-reference to hold the result
          // nMaxLine = maximum number of bytes to read

          #define EOL HB_OSNEWLINE()
          FUNCTION FREADln( nH, cB, nMaxLine )
          LOCAL cLine, nSavePos, nEol, nNumRead
          cLine := space( nMaxLine )
          cB := ''
          nSavePos := FSEEK( nH, 0, FS_RELATIVE )
          nNumRead := FREAD( nH, @cLine, nMaxLine )
          IF ( nEol := AT( EOL, substr( cLine, 1, nNumRead ) ) ) == 0
            cB := cLine
          ELSE
            cB := SUBSTR( cLine, 1, nEol - 1 )
            FSEEK( nH, nSavePos + nEol + 1, FS_SET )
          ENDIF
          RETURN nNumRead != 0

Status

  Ready

Compliance

  This function is CA-Clipper compliant.

Files

  Library is rtl Header is fileio.ch

See Also

- FCREATE()
- FERROR()
- FOPEN()
- FREAD()
- FREADSTR()
- FWRITE()