GPC allows the access of parts (“slices”) of strings as defined in Extended Pascal. For example:
program StringSliceDemo; const HelloWorld = 'Hello, world!'; begin WriteLn (HelloWorld[8 .. 12]) { yields `world' } end.
As an extension, it also allows write access to a string slice:
program SliceWriteDemo; var s: String (42) = 'Hello, world!'; begin s[8 .. 12] := 'folks'; WriteLn (s) { yields `Hello, folks!' } end.
As a further extension, GPC allows slice access also to non-string
arrays. However, the usefulness of this feature is rather limited
because of Pascal's strict type checking rules: If you have, e.g.,
an array [1 .. 10] of Integer
and take a slice
[1 .. 5]
of it, it will not be compatible to another
array [1 .. 5] of Integer
because distinct array types are
not compatible in Pascal, even if they look the same.
However, array slice access can be used in connection with
conformant or open array parameters. See the program
arrayslicedemo.pas
(in the demos
directory) for an
example.