Ver Mensaje Individual
  #4  
Antiguo 11-11-2017
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Reputación: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
No puedes declarar nada con sólo TMiList, porque ese tipo de dato no existe. El tipo de dato, o clase, que estás definiendo se llama TMiList<T>. T, en este caso, es lo que se conoce como parámetro de tipo, sólo válido para la definición del elemento genérico (una clase en este caso). Una vez definido el tipo genérico, el uso del mismo debe "parametrizarse", de tal forma que en el lugar de esa T debes poner una de dos cosas:

1. Otro parámetro de tipo que esté al alcance del elemento que se está declarando. Y no lo hay, porque TForm1 no es una clase genérica (no define un parámetro de tipo en su cabecera).

2. Un tipo de dato concreto (Integer, TDataClass, etcétera).

En pocas palabras, no se puede definir una clase no genérica que declara un campo de tipo genérico, ya que el compilador no tendría manera de generar el código máquina específico para esa parte de la clase.

Si no necesitas que TForm1 esté disponible como formulario en el diseñador de Delphi, es decir, si fuera una definición de formulario 100% para tiempo de ejecución, entonces podrías declararla como TForm1<T> y con ello transferir ese parámetro de tipo (T) a la declaración del campo FMiList y la propiedad MiList. Una manera de solucionar el problema.

Espero haberme explicado.

Saludos.

Al González.
Responder Con Cita