On 23 Μαϊ 2007, at 11:11 ΠΜ, Daniël Mantione wrote:



Op Wed, 23 May 2007, schreef Michalis Kamburelis:

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

I think this is one more example open array versus dynamic array
confusion. Arrays declared in type statements are dynamic arrays; arrays declared in procedure/function headers are open arrays. You can return a
dynamic array, but not an open array.

Daniël_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


Yes, I have noticed that if you first wrap a dynamic array in a type definition then you can declare a function returning such an array, but it seemed to me as an unnecessary complication of things and as an inconsistency in the language. However, the distinction between dynamic and open arrays that D.Mantione says, explains this complication.

Thanks very much for your answers,

Christos




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

Reply via email to