[fpc-pascal] How to declare function with untyped array parameter

LacaK lacak at zoznam.sk
Thu May 26 12:51:13 CEST 2016


> >
> >
> >>> is there way how to declare function, which will accept as 
> parameter any
> >>> array type ?
> >>> (this parameter I need forward to System.Length() only )
> >>
> >> Generally one uses TArray<T> as parametertype. in such cases. One 
> can take
> >> the length of a generic array.
> >
> > Hm,
> > I do not understand.
> >
> > I need something like:
> >
> > function GetLength(const A): integer; inline;
> > begin
> >   Result := System.Length(A); // of course here I get "Type mismatch"
> > end;
> >
> > Regular function, which I will call from generic object method as 
> far as inside generic object method I can not use System.Length()
>
> Your problem is that you have a Length property in your class, so 
> that's why you need to use System.Length()
>
Yes

> . Try something like this:
>
> === code begin ===
>
> type
>   generic TMyHelper<T> = class
>     class function GetLength(aArray: specialize TArray<T>): LongInt;
>   end;
>

When I use:

   generic TLengthHelper<T> = class
     class function GetLength(A: specialize T2DArray<T>): Integer;  // 
<-- HERE I get error "Error: expected ;, but T2DArray found"
   end;

Ok, I will leave "Length" and rename it to "Count" ;-)

Thanks
-Laco.




More information about the fpc-pascal mailing list