On 16.12.2015 17:57, Santiago A. wrote:
El 16/12/2015 a las 17:25, Sven Barth escribió:
Am 16.12.2015 16:12 schrieb "Santiago A."
<<mailto:s...@ciberpiula.net>s...@ciberpiula.net>:
>
> Type
> TRegAlias=record
> AliasName:string
> ...
> end;
>
> TArrayAlias=specialize TArray<TRegAlias>; // <==== Error here
>
> defconexion.pas(71,14) Error: Identifier not found "specialize"
> defconexion.pas(71,25) Error: Error in type definition
> defconexion.pas(71,25) Fatal: Syntax error, ";" expected but "identifier
> TARRAY" found
>
>
> Why this error?
> Why does the compiler try to look for a Identifier "specialize" instead
> of interpreting it as a reserved word?
Which FPC version? Which language mode?
{$mode Delphi}
I've just tried {$mode objfpc} and compiles type declaration, (Delphi
mode can't understand generics?)
Mode Delphi follows Delphi's syntax, thus no "generic" and "specialize"
keywords.
But now I have another problem, when I use the variable, I get "Argument
can't be assigned to"
var
arrayAlias:TArrayAlias;
aliasList:TStringList;
...
begin
...
arrayAlias[i].AliasName:=aliasList[i]; //<==== Error here
Where TArrayAlias=TArray<TRegAlias>, and TArray<_T> is an object, not a
class.
And it has a property
property item[index:Integer]:_T read getItem write setItem; default;
So, it has the getter and the setter.
Doesn't objfpc mode accept default indexed properties?
The problem isn't default indexed properties. I guess your TRegAlias is
a record, thus it will be victim of this:
http://wiki.freepascal.org/User_Changes_2.4.0#Treating_direct-mapped_properties_as_regular_fields
Regards,
Sven
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal