var
The type in the declaration will by any of the predefined types or one of your types that you have defined in the type section. The most common type to use is a record which you have declared. This means that the file will store records of that type. e.g. You could have a file containing entries of type person which would have attributes like name, address, phone etc..
    < file variable > : file of < type >
...
Assign
This is where you give the file variable that you have declared an associated file name. It works like so:--
assign (<file variable>,<file name>);.
Now your file variable points to a real file on the drive. This is where all the information will be written to. Now you must open your file. Two ways of opening a file are explained below.
Rewrite
If the file name you have assigned to your file variable does not actually exist on disk then Rewrite will create it for you. What rewrite does, is clear the file so you can write to it. NOTE: You are not able to read from the file when using rewrite. Rewrite is used like this:--
rewrite (<file variable>);
Easy! Now you can write to the file.
Reset
This is a mode where you can both read and write to the file. This is the main mode that you should use in your programs. Sometimes a trick if you want to create a file and have it open for reading and writing is to create the file with rewrite and then use reset on the file. Reset works like so:--
reset (<file variable>);
Close
The close command closes a file. (as if you hadn't guessed). You need to do this at the end of your program because it saves the changes to the file. To close a file you write :--
close (<file variable>);
Writing records to a file
Writing records to a file is VERY easy. For the examples coming up we will be using the following record type.
type
personType = record
   name : string[30];
   address : string[60];
   phone : string[7];
end;
Now lets say that you have taken input from the user and have all of the values of a person variable. Now you want to write it to the file right? To do this you use the write statement. You should notice that this is the same command that is used for writing to the screen. Well, writing to a file is not much different. All you need to do is the following...
write (<file variable>,person);
You can write as many records to the file as you like now :)
Reading records from a file
To read records from a file you need to use the read statement. This is how you do it:--
read (<file variable>,person);
This reads from the file into your record. When you next execute this statement you will read the next record from the file into your record variable. This is because once you have done a read statement the file pointer is moved along to the next record in the file for your convenience.      :)
Seek
The seek command is to go to a certain record in the file. The file starts at 0 so to be at the first record you need to go
seek (<file variable>,0).
To be past the last record at a place where you can add records to the end of the file you will need to go...
seek (<file variable>,filesize(<file variable>));
In the above example filesize returns the number of records in the file. But since the records are number from zero up, the seek command goes to the next record after the last record entered, ie the end of the file.
Truncate
The truncate command deletes all the records in the file that lie after the current file position. So to delete the last record from the file you will have to go...
seek (<file variable>,filesize(<file variable>)-1);
Deleting a record from a file
truncate (<file variable>);
The simplest way to do this is to go to the last record in the file, read that record into a variable, then go to the record you want to delete and over-write this with the variable that contains the last record's information. Once you have done this you go back to the last record and use truncate to remove it from the end. Now you have deleted a file. The example program below contains a delete procedure if you want to see this in code.

uses Crt;
type
var
procedure Openfile;
procedure writeToFile;
write (personFile,person);
procedure readFromFile;
procedure deleteRecord;
seek (personFile,fileSize(personFile)-1);
begin
end.
program Example;
personType = record
name : string[30];
address : string[60];
phone : string[7];
end;
personFile : file of person;
begin
assign (personFile,'person.dat');
end;
reset (personFile); {This assumes the file already exists}
var
    person : personType;
begin
with person do
end;
begin
    write ('NAME: '); readln(name);
    write ('ADDRESS: '); readln(address);
    write ('PHONE: '); readln (phone);
end;
var
    person : personType;
begin
while not eof(personFile) do
end;
begin
    clrscr;
    read (personFile,person);
    with person do
    begin
        writeln ('NAME: ',name);
        writeln ('ADDRESS: ',address);
        writeln ('PHONE: ',phone);
    end;
    readKey;     {waits for a key to be pressed}
end;
var
    i : integer;
    person : personType;
begin
write ('What record number would you like to delete? ');
end;
readln (i);
seek (personFile,i);
if eof(personFile) then exit;
{The above line checks if 'i' is bigger than or equal to the file size}
{After all, you can't delete a record that doesn't exist!}
read (personFile,person);
seek (personFile,i);
write (personFile,person);
seek (personFile,fileSize(personFile)-1);
truncate (personFile);
   <Main program code here>
   close(personFile);