Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-09-2005
Avatar de DarKraZY
DarKraZY DarKraZY is offline
Miembro
 
Registrado: ago 2003
Posts: 460
Poder: 21
DarKraZY Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 12-09-2005
Avatar de fredo
fredo fredo is offline
Miembro
 
Registrado: oct 2003
Ubicación: Chile, Valparaiso
Posts: 318
Poder: 21
fredo Va por buen camino
Lightbulb

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.
__________________
^_^

http://stna.cl
Responder Con Cita
  #3  
Antiguo 13-09-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
...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.
Responder Con Cita
  #4  
Antiguo 13-09-2005
Avatar de DarKraZY
DarKraZY DarKraZY is offline
Miembro
 
Registrado: ago 2003
Posts: 460
Poder: 21
DarKraZY Va por buen camino
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:

Código Delphi [-]
initialization
  dmIconos := TdmIconos.Create(Application);

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í
Código Delphi [-]
initialization
  dmIconos := TdmIconos.Create(Application);

finalization
  dmIconos.Free;

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?
Responder Con Cita
  #5  
Antiguo 13-09-2005
Avatar de fredo
fredo fredo is offline
Miembro
 
Registrado: oct 2003
Ubicación: Chile, Valparaiso
Posts: 318
Poder: 21
fredo Va por buen camino
Exclamation

Cita:
Empezado por Neftali
...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".
no te preocupes, solo queria ayudar, me ha pasado sus cuantas veces que me han dejado de funcionar cosas, tanto instala que desinstala componetes, asi tamto que tengo algunos que si no los instalas en el orden correcto a la primera simplemente no funcionan mas y debes reinstalar, son unos componentes que talves no conozsacas las "SYMANTEC", por eso la sujerencia, supuse que funciono OK y ahora no....

Bueno saludos y suerte.
__________________
^_^

http://stna.cl

Última edición por fredo fecha: 13-09-2005 a las 14:43:43.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 19:40:56.


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
Copyright 1996-2007 Club Delphi