![]() |
QR - Invalid Pointer Operation
Hola a todos, tengo un incoveniente con una aplicación que hice, mas precisamente con el error Invalid Pointer Operation.
El error concretamente me lo da en la linea Nº 2273 de la unit QuickRpt.pas de los componentes QR version 3.6.2, ese linea es la linea que dice end; del destructor de la clase TQRBasePanel, el código es: destructor TQRBasePanel.Destroy; begin FFrame.Free; inherited Destroy; end; Se supone que eso anda sino el error le debería dar a todos ustedes tambien, obviamente... :p Les cuento lo que yo hago, tengo una unit que centraliza todas las impresiones de los reportes, ahí dentro tengo una variable del tipo TQuickRep, que apunta al reporte actual. El código que uso para imprimir cada reporte, basicamente es el siguiente: Application.CreateForm(TqrTest, qrTest); try frmImpresion.Report := qrTest; frmImpresion.Mostrar; finally FreeAndNil(qrTest); end; El problema claramente es la variable frmImpresion.Report ya que si mando a imprimir el reporte directamente, este se imprime sin problema y no da ningun error, es un bug de Delphi que al ejecutar la linea FreeAndNil(qrTest); da error o estoy haciendo algo mal ??? Gracias desde ya. |
Depende de lo que haga Mostrar, porque si hace un Report.Preview o PreviewModeless, obviamente va a continuar la ejecución, llegará al Finally y destruirá algo que se está mostrando.
Tambien puede ser problema de la asignación que comentas.. quizás sea mejor opción:
Algo que no acabo de entender es que usas Application.CreateForm.... pero ¿qrTest qué es, un form o un TQuickRep? Si es un TquickRep como dices... debería ser:
Saludos |
Cita:
Cita:
Cita:
Por costumbre uso eso, cuando agrego un quickreport delphi me agrega esa linea directamente en el .dpr y se me pegó esa forma de crear forms y reportes. De todas formas ya había probado con y me sigue dando el error... Saludos |
y si en el finally usas:
frmImpresion.Report := nil; FreeAndNil(qrTest); o frmImpresion.Free; FreeAndNil(qrTest); algo que me deja una duda, qrTest es de las formas autocreadas? me imagino que si, por lo que dices de que siempre te los deja el delphi en el .dpr, por lo cual es probable que ahi este tu error, si delphi auto crea la forma qrTest y luego la pones en freeandnil, la aplicacion no tendra manera de manejarla y manda la excepcion, |
Cita:
Si se usa solamente Objeto.Free, entonces delphi no puede saber si la variable es igual a nil o no, y en este caso, si se obtiene errores de acceso a memoria. Report.Preview, aunque no continua la ejecución de código, algunas veces me ha dado algún que otro fallo colateral, porque precisamente no es una ventana modal real, sino simulada. Como digo, algunas veces he tenido que usar Report.PreviewModal. Resumiendo todo lo dicho: Saludos |
Gracias a ambos, ya había probado todo lo que me dicen, salvo el Assign que dice Lepe, que lo probaré hoy a la noche.
El reporte qrTest no se crea en el dpr, obviamente lo saqué de ahí, fue a modo de "justificación" a la pregunta de lepe de porque creaba el reporte con un Application.CreateForm. A la noche pruebo lo del Assign, y si no anda se complica el tema... Gracias! |
Bueno, finalmente probe todo lo que me dijeron y no hubo caso, asi que tuve que sacar el casteo y llamar al método Print de cada reporte directamente.
Gracias de todas formas. |
La franja horaria es GMT +2. Ahora son las 07:33:01. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi