Hi Sven & all,
> Date: Fri, 6 May 2011 22:06:55 +0200 > From: pascaldra...@googlemail.com > To: lazarus@lists.lazarus.freepascal.org > Subject: Re: [Lazarus] Error: Generics without specialization cannot be used > as a type for a variable > > On 06.05.2011 17:58, Peter Williams wrote: > > Hi, > > > > Options changed, recompiling clean with -B > > Hint: Start of reading config file /etc/fpc.cfg > > Hint: End of reading config file /etc/fpc.cfg > > Free Pascal Compiler version 2.4.2-0 [2010/11/11] for i386 > > Copyright (c) 1993-2010 by Florian Klaempfl > > Target OS: Linux for i386 > > Compiling island_maker.lpr > > Compiling unit1.pas > > unit1.pas(144,19) Error: Generics without specialization cannot be used > > as a type for a variable > > unit1.pas(152,1) Fatal: There were 1 errors compiling module, stopping > > > > http://62.166.198.202/bug_view_advanced_page.php?bug_id=18101 > > > > (0043710) > > Florian Klämpfl (administrator) > > 2010-11-29 10:47 > > > > Please use always the latest release compiler (2.4.2) as starting > > compiler to build a new fpc. > > > > > > NB - I am using FPC 2.4.2. > > > > type > > Terrain_type = (Land, Sea); > > > > exit_type = array[ directions ] of integer; > > > > description_type = array[1..2] of string; > > > > Tmap_detail = Object > > FTerrain : Terrain_type; > > FTerrain_char : char; > > Fdescription : description_type; > > Fx, Fy, Flocation_number : integer; > > Fexits : exit_type; > > end; > > > > // The Island class definition > > Generic TIsland<T> = class > > Items : array of Tmap_detail; > > public > > constructor Create(AList: TList);: [Lazarus] dtm_maker project compile > > errors with TList code. > > procedure Add( Value : Tmap_detail ); > > end; > > var > > Form1: TForm1; > > Island : TIsland; // line 144 > > > > Unit1.pas >>> http://pastebin.com/wuEft4Kb > > Why do you declare TIsland as a generic if you don't use the type "T" > anywhere? > > Nevertheless, you need to declare a specialized type of a generic, so > you're able to use it. > > Example: > > type > TIntegerIsland = specialize TIsland<Integer>; > > var > Island: TIntegerIsland; > (...) Okay, except that Island is not meant to be an integer. See here: line 88Tmap_detail = Object FTerrain : Terrain_type; FTerrain_char : char; Fdescription : description_type; Fx, Fy, Flocation_number : integer; Fexits : exit_type; end; // The Island class definition Generic TIsland<T> = class Items : array of Tmap_detail; public constructor Create(AList: TList); procedure Add( Value : Tmap_detail ); end; So, as you can see, I am trying to define a Generic (or possibly a Specialize) of type: an array of Tmap_detail. How do I correctly define this??? The reason why I am choosing a Generic or Specialize is so that I have accept to the "Sort" procedure of TList. I am not sure if I am doing this correctly. Best Regards,Peter > > Regards, > Sven > > -- > _______________________________________________ > Lazarus mailing list > Lazarus@lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
-- _______________________________________________ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus