FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Error Access Violation en Paquetes (Packages)
Hace unas semanas empecé a separar el código fuente en dos packages. Ahí introduje todas las unidades con objetos y formularios que solía utilizar en varios proyectos (antes duplicaba siempre los fuentes). Ya que leyendo varios hilos descubrí que la mejor manera para reutilizar código entre varios proyectos era el uso de Packages o Paquetes.
Todo iba perfectamente, poco a poco iba agregando más unidades y al mismo tiempo hacía cambios en mis proyectos y en las unidades que contenían los bpl. Automáticamente se compilaban, e incluso a veces forzaba a compilar los paquetes. Pero desde hace unos días, si compilo el package dos veces, o a veces al darle a "Install" (también tengo componentes)... pues me da errores de Access Violation. No hay ningún error sintáctico, la fase de compilación es correcta. No sé cual puede ser el error: No es referente a la opción de "Build with runtimes Packages" ya que no hace falta que llegue a alguna aplicación para que de el error. Utilizo dentro de los formularios herencia entre ellos. Utilizo la versión Delphi 7 con el Update 7.1 de la web de borland. Espero haberme explicado lo mejor posible, y gracias por su ayuda
__________________
Si no lo sabes, necesitas leerlo |
#2
|
||||
|
||||
Probaste reinstalando el delphi... claro que eliminandolo por completo (incluso del registro de windows....), a veces se chinga y no hay nada que hacer.... saludos.
|
#3
|
||||
|
||||
...y me pregunto yo, ¿Qué tendrá que ver lo que haya en el registro de windows para que Delphi de un Access Violation en la instalación de paquetes?
Perdona que te lo diga (fredo), pero esa contestación me parece "a bulto" (por decir algo), es decir, que a todos los mensajes de la lista podríamos contestar con la misma, "no tiene nada que ver, pero reinstala". Creo que el problema puede estar en las secciones de inicialización y finalización de los packages; Preferentemente al destruir cosas, ya que comentas qe te falla en la segunda pasada. Al compilar un package, éste se descarga de memoria y se ejecuta el Finalize y al hacer el Install, se vuelve a cargar y se ejecuta el Initialize, de ahí que esos puntos pueden provocar el error. El error que comentas es debido (normalmente) a que algo que estás accediendo no está creado (es igual a nil), así que yo buscaría elementos (objetos) en las secciones antes comentadas.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#4
|
||||
|
||||
Gracias Fredo por la respuesta, aunque ese no era el motivo.
Gracias sobretodo a Neftali, tenías toda la razón. No sé como se me olvidó liberar un objeto ya que había puesto:
Pero claro no liberaba nunca el objeto... Aunque en teoría no debería de dar ningún problema, no? Porque al hacer un Create este asigna una nueva referencia. De todas maneras he dejado el código así
De esta forma ya no me da ningún Access Violation al compilar. Pero sigo teniendo un problema. Tengo dos paquetes. Uno de ellos solo es código fuente con clases y también formularios. En teoría, ya que no son componentes, puedo poner que sea un paquete de runtime, verdad??? o debido a los forms necesita que sea también en tiempo de diseño? Porque si dejo el primer paquete como Runtime, me permite pulsar "Install" y al pulsarlo da un error de la rtl70.bpl y se cierra Delphi. Lo he solucionado poniendo en Runtime y Design, aunque no es la solución, no?
__________________
Si no lo sabes, necesitas leerlo |
#5
|
||||
|
||||
Cita:
Bueno saludos y suerte. Última edición por fredo fecha: 13-09-2005 a las 14:43:43. |
|
|
|