Node: String Slice Access, Next: Type Casts, Previous: Pointer Arithmetics, Up: Programming

### Accessing parts of strings (and other arrays)

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.