PDA

Ver la Versión Completa : ¿Freereport para Delphi XE?


nachoasensio
30-03-2011, 22:36:33
Hola:

He intentado que Delphi XE (Pro) sea capaz de trabajar con FreeReport 2.34, pero no hay manera. Supongo que los cambios de Unicode, strings, etcétera son demasiado para esa librería. El caso es que me encanta cómo funciona Freereport, y no estoy dispuesto a pagar 180 euros por el motor de informes estándar de Fastreport. Y con RAVE no me manejo. Necesito ser capaz de vincular imágenes que están en ficheros (y no en la bd) en la banda de datos principal, y no hay manera :(. Además, Rave no tiene un diseñador para integrar en el exe (a no ser que pagues por él).

¿Alguien sabe lo suficiente sobre los cambios de delphi, a partir de la versión 2009, y ha sido capaz de echar a andar Freereport? Yo lo he intentado, pero tengo un lío enorme con los nuevos string, PChar y demás "novedades" del delphi.

Si alguien ha modificado Freereport para que funcione en Delphi XE, y quiere compartirlo, le quedaría muy agradecido.

Un saludo.

Chris
30-03-2011, 22:56:35
Realmente la mayoría de código "viejo" debería de funcionar perfectamente con D2009. El problema que tienen muchos componentes es que trabajan con combinaciones tipo CadenaString := CadenaAnsiString, lo que funcionaba perfectamente antes de D2009. Lo importante es que veas en el código asignaciones de tipo AnsiString, AnsiChar echas a un String o Char respectivamente.

nachoasensio
30-03-2011, 23:44:03
Realmente la mayoría de código "viejo" debería de funcionar perfectamente con D2009. El problema que tienen muchos componentes es que trabajan con combinaciones tipo CadenaString := CadenaAnsiString, lo que funcionaba perfectamente antes de D2009. Lo importante es que veas en el código asignaciones de tipo AnsiString, AnsiChar echas a un String o Char respectivamente.

Empecé a hacerlo. Lo primero que me mosqueó fue que los {IFDEF} no reconocían "DELPHI6", por lo que los uses Variants había que sacarlos de allí. Después empezaron las definiciones TfrBookmark = type TBookmark, que dan un error la mar de raro (eliminé el tipo TFrBookmark y donde se usaba fui poniendo directamente TBookmark). Luego empecé a cambiar string por AnsiString, luego llegaron los pchar, los streams,... y al final el lío que tenía en la cabeza era tal que desistí. La única prueba que hice, desactivando los códigos de barras (porque no hubo forma de que compilaran) me mostraba un informe en blanco :eek:

He estado buscando por internet, por si alguien los había pasado a delphi xe (o a 2009 ó 2010), pero no he encontrado nada, y los RAVE no me sirven para lo que quiero (o no sé usarlos)...

En fin, mañana a lo mejor vuelvo a intentarlo, después de releer la documentación sobre los cambios en delphi a partir del 2009.

Un saludo.

Chris
31-03-2011, 00:26:01
Mmm me quedé con ganas de saber el problema con el TfrxBookmark :cool:
Pero, creo que mejor hubieses dejado los String a cómo estaban y no cambiarlos a AnsiString. De hecho, yo hubiera cambiado los AnsiString, AnsiChar por sus contrapartes String y Char (incluyendo PAnsiChar -> PChar).

Por el lado de la definición de DELPHI6, por lo que he visto en otros componentes, es que por defecto definen una versión en específico del IDE. Esto lleva a un enredo con las {$IFDEF DELPHIx} y se necesita de bastante análisis para comprender lo que realmente se quiere decir. Pero ya que has mencionado la unidad Variants, casi con certeza puedo decir que debiste dejar esta unidad en el USES.

makina
26-11-2012, 22:52:00
Saludos a todos.
Me tope con este tema y creo que he resuelto un 80 % de las modificaciones necesarias para generar el paquete para instalar en xe
el unico problema que me enfrento es a esto, en la unidad
FR_DBRel

al compilar me muestra
[dcc32 Error] FR_DBREL.PAS(22): E2574 Instantiated type can not be used for TYPE'd type declaration

la linea de error es esta


TfrBookmark =
{$IFDEF IBO} type string;
{$ELSE} type TBookmark; // <-- aqui muestra el error
{$ENDIF}


segun la documentacion que encontre en
http://docwiki.embarcadero.com/RADStudio/XE/en/E2574_Instantiated_type_can_not_be_used_for_TYPE%27d_type_declaration_(Delphi)

EL error es el siguiente, sin embargo no se como solucionarlo, Alguna idea?


This occurs when trying to define a type based on a generic object.
program E2574;

{$APPTYPE CONSOLE}

uses
SysUtils;

type
TGenClass<T> = class
end;

TClass = type TGenClass<Integer>; //E2574

type
TGenArray<T> = array of T;
TArray = type TGenArray<Integer>; //E2574

type
TGenRecord<T> = record
end;

TRecord = type TGenRecord<Integer>; //E2574

begin
end.



Nota: Si alguien ha logrado la instalación de los freereport en XE y pudiera compartir el paquete se los agradecería, y por su puesto en cuanto yo logre lanzar el freereport en xe compartire el paquete

saludos

nachoasensio
27-11-2012, 21:38:11
Yo finalmente opté por "pasar por caja" y compré FastReports. Y no me arrepiento. Es bastante más potente que Freereports y está en continuo desarrollo. Pagas una vez y tienes soporte y actualizaciones por mucho tiempo.

Otra alternativa es trabajar con Lazarus, que sí tiene FreeReports, pero yo no he logrado que funcionen bien cosas tan básicas como actualizar una tabla sqlite correctamente, sin usar SQL, aparte de que el entorno es muy lento.

Me temo que en esta vida no queda otra que pagar para poder programar con un poco de comodidad. Cuando, como en mi caso, no se hace como profesión, sino como afición, y no se gana nada por lo programado, es una faena, y más al precio al que ponen los de Embarcadero las actualizaciones, porque dan ganas de cambiarse a java (¡puaaagggg!) o irse a alguna esquina poco iluminada a buscar una copia del nuevo Delphi. Pero hay quien se gasta una fortuna en soldaditos de plomo... y otros tenemos que pagar para poder disfrutar trabajando en Delphi.

egostar
27-11-2012, 21:58:09
....... Pero hay quien se gasta una fortuna en soldaditos de plomo... y otros tenemos que pagar para poder disfrutar trabajando en Delphi.

Me ha agradado tu comentario.

La realidad es que las prioridades personales están por encima de todo. ^\||/

Saludos

makina
27-11-2012, 22:20:51
Muchas Gracias Por su respuesta. Desafortunadamente aunque quisiera usar FastReport su licencia limita su uso en ciertos aplicativos. por lo que no puedo (legalmente) comprarlos y usarlos en mi aplicación.
espero alguien pudiera ayudar con el error que me muestra al intentar usar el TBookmark.

Gracias de antemano.

Al González
28-11-2012, 06:36:46
[...] 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.
Type
T1 = Type Integer; // Válido, se define nuevo tipo "T1", entero de 32 bits con signo (como Integer)
T2&lt;Tipo> = Array Of Tipo; // Se define tipo genérico
T3 = Type T2&lt;Integer>; // Inválido por ser T2 un tipo genérico
T4 = T2&lt;Integer>; // Válido, se define un alias "T4" para el tipo T2&lt;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í: TfrBookmark =
{$IFDEF IBO} type string;
{$ELSE} type TBookmark; // <-- aquí muestra el error
{$ENDIF} por: 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.

makina
29-11-2012, 21:41:19
Saludos. :)

Al González.

Al. Muchas Gracias por tu aporte. voy intentar modificar el codigo con esta explicación y les aviso como me ha ido..
Gracias :D

pacopenin
08-01-2013, 17:35:06
He encontrado este enlace que adapta FreeReport a D10. No lo he probado, pero puede que tenga todo eso resuelto.

http://code.google.com/p/freereport-utf/