On Sun, 20 May 2018, Mattias Gaertner wrote:

On Sun, 20 May 2018 14:23:25 +0200
Sven Barth via fpc-pascal <fpc-pascal@lists.freepascal.org> wrote:

Hello together!

I'm pleased to announce that after nearly a year various extensions for dynamic arrays have been finished. This includes the following features:

- support for array constructors using "[...]" syntax
- support for Insert(), Delete() and Concat()
- support for "+" operator
- support for dynamic array constants (and variable initializations)

:)

I hope 3.2 is coming soon.


[...]
=== code end ===

For constants the dynamic array constants adhere to the writable constants switch $J. E.g. the following will result in an exception:

=== code begin ===

{$J-}
const
   Test1: array of LongInt  = (1, 2, 3);
begin
   Test1[1] := 42;
end.

This seems to be inconsistent with

procedure Test(const a: TStringDynArray);
begin
 a[1]:='42';
end;

Isn't it?

The const in the parameters indicates that the pointer a cannot be assigned,
but the contents can be assigned when inside the procedure.
(we can discuss whether this behaviour is logical, but I suppose we
inherited this from Delphi)

Whereas a constant is something that is eternally constant throughout the
application. Normally, a constant is something that is replaced by its
value when the compiler encounters it the sources.

So in a sense, it does not exist at runtime, hence you cannot assign to it
either.

Michael.
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to