Ver Mensaje Individual
  #9  
Antiguo 28-11-2012
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: 30
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
Cita:
Empezado por makina Ver Mensaje
[...] espero alguien pudiera ayudar con el error que me muestra al intentar usar el TBookmark.
Lo siguiente no será de mucha ayuda, pero quizá sirva para ir avanzando. El error aparece porque el compilador no admite definir tipos de forma tipificada cuando el tipo base es un genérico.
Código Delphi [-]
Type
  T1 = Type Integer;  // Válido, se define nuevo tipo "T1", entero de 32 bits con signo (como Integer)
  T2<Tipo> = Array Of Tipo;  // Se define tipo genérico
  T3 = Type T2<Integer>;  // Inválido por ser T2 un tipo genérico
  T4 = T2<Integer>;  // Válido, se define un alias "T4" para el tipo T2<Integer>
Resulta ser que TBookmark es desde hace algunas versiones un alias del tipo TBytes, el cual la RTL define de forma implícita como TArray<Byte> (array of Byte). Para sortear ese inconveniente, vas a tener que cambiar el código que muestras así:
Código Delphi [-]
TfrBookmark =
{$IFDEF IBO} type string;
{$ELSE} type TBookmark; // <-- aquí muestra el error
{$ENDIF}
por:
Código Delphi [-]
TfrBookmark =
{$IFDEF IBO} type string;
{$ELSE} TBookmark;
{$ENDIF}
Es decir, TfrBookmark ya no podrá ser un tipo declarado de forma tipificada (con la palabra Type después del signo de igual). El impacto de este cambio estará en todas aquellas partes de FreeReport que asuman la existencia de TfrBookmark como tipo de dato único y no como un simple alias de TBookmark / TBytes. Como yo lo veo y con la dispensa de no conocer FreeReport, diría que eso va a ser el menor de tus problemas en el caso que planteas, así que adelante.

Saludos.

Al González.

Última edición por Al González fecha: 28-11-2012 a las 06:40:58.
Responder Con Cita