[fpc-pascal] Pass open array to static array?
Sven Barth
pascaldragon at googlemail.com
Sun Mar 15 23:40:59 CET 2020
Ryan Joseph via fpc-pascal <fpc-pascal at lists.freepascal.org> schrieb am
So., 15. März 2020, 19:58:
>
>
> > On Mar 15, 2020, at 8:53 PM, Howard Page-Clark via fpc-pascal <
> fpc-pascal at lists.freepascal.org> wrote:
> >
> >
> > With recent FPCs you can however do this:
> >
> > program test;
> > var
> > data: array[0..2] of Integer;
> > tmp: array of Integer = Nil;
> > begin
> > tmp := [1,2,3];
> > Move(tmp[0], data[0], SizeOf(data));
> > end.
>
> yeah I figured you can do something similar with generics:
>
> generic procedure Move<T>(source: array of T; var dest);
> var
> bytes: SizeInt;
> begin
> bytes := length(source) * sizeof(T);
> Move(source, dest, bytes);
> end;
>
> begin
> specialize Move<GLfloat>([0.0, 0.5, 0.0,
> -0.5, -0.5, 0.0,
> 0.5, -0.5, 0.0],
> data.verts);
> end.
>
> but why doesn't open arrays already do this? an open array is just a
> constant array so the compiler should know the arrays are compatible for
> assignments.
>
The message of the compiler is a bit misleading. It's a *dynamic* array
that is created there, not an *open* array. Open arrays only exist when
being passed directly to a parameter.
But to answer why the compiler does not do it: because I simply have not
had the time to implement it! The main point of dynamic array constructors
was to have them Delphi compatible. Support for static arrays is something
I have planned though (and you're not the first to ask for it).
Regards,
Sven
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20200315/acd531e9/attachment.html>
More information about the fpc-pascal
mailing list