Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Excepción al configurar impresora con QReport (https://www.clubdelphi.com/foros/showthread.php?t=92714)

darkerviti 09-01-2018 12:59:09

Excepción al configurar impresora con QReport
 
Buenas,

Os comento el problema:

Tengo un informe con QuickReport en Delphi XE5, genero el informe sin problema, le doy a configurar impresora desde el preview, pero al cambiar la impresora (o el número de páginas o cualquier otra cosa) y aceptar me da una excepción y muchas veces me obliga a cerrar la aplicación.

He estado depurando el error, me lleva al archivo QRPrnSu.pas, dentro de :
Código:

function TQRCommonDialog.TaskModalDialog(DialogFunc: Pointer; var DialogData): Bool;
En concreto en la línea:
Código:

      Result := TDialogFunc(DialogFunc)(DialogData);
Espero que alguien pueda arrojar algo de luz al asunto.

Un saludo y muchas gracias.

duilioisola 09-01-2018 16:01:21

Te falta informarnos la excepción de que se trata.

Si se trata de
ERR_OUT_OF_MEMORY, te falta memoria.
ERR_OUT_OF_DISK_SPACE, te falta espacio en disco.
ERR_...

TOPX 09-01-2018 16:17:10

También existe una excepción llamada EProgrammerNotFound.

Más información.
-

darkerviti 10-01-2018 08:37:02

Cita:

Empezado por duilioisola (Mensaje 523970)
Te falta informarnos la excepción de que se trata.

Si se trata de
ERR_OUT_OF_MEMORY, te falta memoria.
ERR_OUT_OF_DISK_SPACE, te falta espacio en disco.
ERR_...

Perdón por el empanamiento.

A ver, es un error de violación de acceso a memoria, despues de un día largo de depuración
y haciendo el mismo programa de prueba en delphi XE5 (el que falla) y en delphi 7 (que funciona)
solo he visto una diferencia, en el QRPrnSu.pas que comentaba todo es igual, pero cuando busco
la definición del tipo de DialogData (TPrintDlg) me llevan al archivo CommDlg, y ahí, en XE5 lo
encuentro como un alias de TPrintDlgW mientras que en delphi 7 es TPrintDlgA.
He estado mirando y las estructuras solo cambian en 1 cosa, 2 campos (lpPrintTemplateName
y lpSetupTemplateName) que para la versión W es de tipo LPCWSTR (Renombrado de PWideChar)
y en la versión A el tipo es PAnsiChar.

Y ahora me encuentro en este punto, no sé si esta información adicional será util, si voy por el
buen camino en la busqueda de una solución o me estoy confundiendo de por donde avanzar.

Una vez más muchas gracias.

darkerviti 15-01-2018 08:15:00

Buenas, lo he solucionado por otro lado,

Lo pongo aquí por si a alguien le puede servir.

El problema estaba en el uso de la clase TQRPrintDialog en el procedimiento TCustomQuickRep.PrinterSetup del archivo QuickReport.pas.
Lo que he hecho ha sido cambiar el tipo del objeto que se utiliza por uno de tipo TPrintDialog, con eso y un par de cambios por pequeñas variaciones de la estructura del objeto se soluciona el problema.

Espero que le sirva a alguien.

Un saludo.


La franja horaria es GMT +2. Ahora son las 18:30:58.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi