Difference between revisions of "sysutils"
(→Caveats: use more generic term “module” [referring to either unit or program source code file]) |
(→Caveats: implicit inclusion of sysUtils) |
||
Line 18: | Line 18: | ||
To catch an exception by its name you will need to include <syntaxhighlight lang="pascal" inline>sysUtils</syntaxhighlight>, even though the module itself does not use any of the included system utilities. | To catch an exception by its name you will need to include <syntaxhighlight lang="pascal" inline>sysUtils</syntaxhighlight>, even though the module itself does not use any of the included system utilities. | ||
− | + | Changing run-time errors to exceptions has a ''global'' effect. | |
+ | The following program will terminate with an uncaught ''exception'', even though it does not list <syntaxhighlight lang="pascal" inline>sysUtils</syntaxhighlight> in its <syntaxhighlight lang="delphi" inline>uses</syntaxhighlight>-clause: | ||
+ | The <syntaxhighlight lang="pascal" inline>sysUtils</syntaxhighlight> unit is ''implicitly'' included via the {{Doc|package=RTL|unit=strutils|text=<syntaxhighlight lang="pascal" inline>strUtils</syntaxhighlight> unit}}: | ||
+ | <syntaxhighlight lang="pascal"> | ||
+ | program a; | ||
+ | uses | ||
+ | strUtils; | ||
+ | var | ||
+ | x: file of char; | ||
+ | c: char; | ||
+ | begin | ||
+ | // deliberately cause an error for demonstration purposes | ||
+ | read(x, c); | ||
+ | end. | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Also, if [[Size Matters|size matters]], using <syntaxhighlight lang="pascal" inline>sysUtils</syntaxhighlight> is by design not the smartest choice. | ||
== See also == | == See also == |
Revision as of 19:47, 6 February 2021
│
English (en) │
Esperanto (eo) │
français (fr) │
The unit sysUtils
shipped with the FPC’s default run-time library provides many system utilities.
It attempts to be as compatible to Delphi’s sysUtils
unit as possible.
However, the FPC version is available on all platforms that the FPC supports.
It does not contain any Windows-related routines or other highly platform-specific functionality.
Notable functionality
format
executeProcess
for executing external programs- several routines ensuring productive use of
tDateTime
- type helpers for all basic data types
freeAndNil
- routines to access environment variables
Caveats
If the sysUtils
unit is included, all run-time errors become exceptions, which virtually forces you to use a compiler mode (or mode switch) that allows exception treatment.
To catch an exception by its name you will need to include sysUtils
, even though the module itself does not use any of the included system utilities.
Changing run-time errors to exceptions has a global effect.
The following program will terminate with an uncaught exception, even though it does not list sysUtils
in its uses
-clause:
The sysUtils
unit is implicitly included via the strUtils
unit:
program a;
uses
strUtils;
var
x: file of char;
c: char;
begin
// deliberately cause an error for demonstration purposes
read(x, c);
end.
Also, if size matters, using sysUtils
is by design not the smartest choice.