Ver Mensaje Individual
  #1  
Antiguo 10-11-2017
bucanero bucanero is offline
Miembro
 
Registrado: nov 2013
Ubicación: Almería, España
Posts: 208
Reputación: 11
bucanero Va camino a la fama
Sobreescribir funcion en una clase generica derivada de TList

Hola a todos,

tengo una clase genérica propia derivada directamente de la clase genérica TLIST y la defino así:

Código Delphi [-]
  TMiList< T >=class(TList< T >)
    ...
  end;

hasta aquí todo correcto, el tema es que ahora necesito en un form usar una variable de esta clase genérica, para mas adelante asignarla e intento declararla de la siguiente forma:

Código Delphi [-]
  TForm1 = class(TForm)
  private
    { Private declarations }
    FMiList: TMiList;
  public
    { Public declarations }
    property MiList:TMiList read FMiList write FMiList;
  end;

Y en otra unit distinta tengo el siguiente código donde ya se declaran todos los tipos y se asigna la clase con sus respectivos datos definidos:

Código Delphi [-]
type
  TDataClass = class
    ...
    data:integer;
  end;

  TMiListData = class(TMiList< TDataClass >)
  end;

  ....

var
  Form1:TForm1;
begin
  Form1:=TForm1.Create(Application);
  Form1.MiList:=TMiListData.Create;
  ...
end;

El problema lo tengo en el segundo fragmento de código, donde me indica el siguiente error en esta línea
Código Delphi [-]
  FMiList: TMiList; 
  [dcc32 Error] Unit1.pas(18): E2003 Undeclared identifier: 'TMiList'

y el error si lo declaro así entonces es:
Código Delphi [-]
  FMiList: TMiList< T >; 
  [dcc32 Error] Unit1.pas(18): E2003 Undeclared identifier: 'T'

La pregunta es ¿como puedo usar esta clase genérica? por que la clase TList si permite declararla de forma genérica

Gracias y un saludo
Responder Con Cita