[Overview][Constants][Types][Classes][Procedures and functions][Variables][Index] | Reference for unit 'sysutils' (#rtl)

# FileSeek

Set the current file position on a file handle.

## Declaration

Source position: filutilh.inc line 221

`function FileSeek(`
`Handle: THandle;`
`FOffset: LongInt;`
`Origin: LongInt`
`):LongInt; function FileSeek(`
`Handle: THandle;`
`FOffset: Int64;`
`Origin: LongInt`
`):Int64;`

## Description

FileSeek sets the file pointer on position Offset, starting from Origin. Origin can be one of the following values:

fsFromBeginning
  Offset is relative to the first byte of the file. This position is zero-based. i.e. the first byte is at offset 0.
fsFromCurrent
  Offset is relative to the current position.
fsFromEnd
  Offset is relative to the end of the file. This means that Offset can only be zero or negative in this case.

If successful, the function returns the new file position, relative to the beginning of the file.

Remark: | The above mentioned constants do not exist in Delphi.

## Errors

On error, -1 is returned.

## See also

FileClose |  | Close a file handle.
FileWrite |  | Write data from a buffer to a given file handle.
FileCreate |  | Create a new file and return a handle to it.
FileOpen |  | Open an existing file and return a file handle
FileRead |  | Read data from a file handle in a buffer.
FileTruncate |  | Truncate an open file to a given size.

## Example

    Program Example37;

    { This program demonstrates the FileCreate/FileSeek/FileReed/FileTruncate functions }

    Uses sysutils;

    Var I,J,F : Longint;

    Begin
      F:=FileCreate ('test.dat');
      If F=-1 then
        Halt(1);
      For I:=0 to 100 do
        FileWrite(F,I,SizeOf(i));
      FileClose(f);
      F:=FileOpen ('test.dat',fmOpenRead);
      For I:=0 to 100 do
        begin
        FileRead (F,J,SizeOF(J));
        If J<>I then
          Writeln ('Mismatch at file position ',I)
        end;
      FileSeek(F,0,fsFromBeginning);
      Randomize;
      Repeat
        FileSeek(F,Random(100)*4,fsFromBeginning);
        FileRead (F,J,SizeOf(J));
        Writeln ('Random read : ',j);
      Until J>80;
      FileClose(F);
      F:=FileOpen('test.dat',fmOpenWrite);
      I:=50*SizeOf(Longint);
      If FileTruncate(F,I) then
        Writeln('SuccessFully truncated file to ',I,' bytes.');
      FileClose(F);
    End.