[next] [prev] [prev-tail] [tail] [up]

#### 1.2.38 $I or $IOCHECKS : Input/Output checking

The {$I-} or {$IOCHECKS OFF} directive tells the compiler not to generate input/output checking code in the program. By default, the compiler generates I/O checking code. This behaviour can be controlled globally with the -Ci switch.

When compiling using the -Ci compiler switch, the Free Pascal compiler inserts input/output checking code after every input/output call in the code. If an error occurred during input or output, then a run-time error will be generated. This switch can also be used to avoid this behaviour.

If no I/O checking code is generated, to check if something went wrong, the IOResult function can be used to see if everything went without problems.

Conversely, {$I+} will turn error-checking back on, until another directive is encountered which turns it off again.

The most common use for this switch is to check if the opening of a file went without problems, as in the following piece of code:

assign (f,’file.txt’);
{$I-}
rewrite (f);
{$I+}
if IOResult<>0 then
begin
Writeln (’Error opening file: "file.txt"’);
exit
end;

See the IOResult function explanation in Reference Guide for a detailed description of the possible errors that can occur when using input/output checking.

[next] [prev] [prev-tail] [front] [up]