Christos Chryssochoidis wrote:
> Hi, 
> 
> I tried to write some function that returned a dynamic array, and
> realized that this isn't allowed. Why? After all one can specify an
> array of variable length as type for variables... Furthermore - if I'm
> not mistaken - a dynamic array is implemented internally as a pointer,
> and so there wouldn't be any runtime overhead for returning a dynamic
> array from a  function.
> 

It *is* allowed. The only trick is that you have to declare a type for
your dynamic array, i.e. you have to write something like

  type TDynInts = array of Integer;
  function MakeArray: TDynInts;

instead of

  function MakeArray: array of Integer;

This quick example compiles fine in objfpc mode:

type
  TDynInts = array of Integer;

function MakeArray: TDynInts;
begin
  SetLength(Result, 2);
  Result[0] := 0;
  Result[1] := 1;
end;

var
  A: TDynInts;
begin
  A := MakeArray;
  Writeln(A[0], ' ', A[1]);
end.

Michalis
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to