FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Access violation
Hola, a ver si me podéis ayudar.
He creado un form para acceder a base de datos con el siguiente código: unit BasDat; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, DBAccess, Uni, UniProvider, SQLiteUniProvider; type TFormBasDat = class(TForm) ProveedorSqlite: TSQLiteUniProvider; ConexionBDSqlite: TUniConnection; private { Private declarations } public { Public declarations } end; var FormBasDat : TFormBasDat ; implementation {$R *.dfm} end. El .dpr tiene el siguiente código program Sdiapp; uses Forms, SDIMAIN in 'SDIMAIN.PAS' {SDIAppForm}, BasDat in 'BasDat.pas' {FormBasDat}; {$R *.RES} begin with TFormBasDat.Create(Application)do begin Visible:= False; end; Application.Initialize; Application.CreateForm(TSDIAppForm, SDIAppForm); Application.Run; end. Cuando intento acceder desde el evento create de SDIAppForm (form principal), en el que he metido el uses de FormBasDat, me devuelve un access violation. El evento oncreate tiene el siguiente código procedure TSDIAppForm.EstablecerInicio(Sender: TObject); begin FormBasDat.ConexionBdSqlite.Connected := True; FormBasDat.ConexionBDSqlite.StartTransaction; end; He recorrido el código con debug y encuentro que el form de base de datos se ejecuta sin problemas, pero en la primera línea ejecutada en el oncreate anterior (FormBasDat.ConexionBdSqlite.Connected := True me devuelve "inaccessible value". Que es lo que estoy haciendo mal Un saludo |
#2
|
||||
|
||||
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración.
|
#3
|
|||
|
|||
Access violation (llamada a componente de otro form)!!
Hola
He leido la guía, he buscado en google y en la búsqueda del foro, he puesto la consulta en "Varios" ya que no sabía en que apartado ponerlo y en la búsqueda encontré varios mensajes sobre el tema. He intentado explicarme y documentar con detalle el problema, he puesto en distinto color el código, etc. Si me comentas lo de la guía por un motivo específico me gustaría que me lo indicaras para tenerlo en cuenta y no reincidir. En cuanto a la consulta no encuentro respuesta, me imagino que será algún detalle trivial que no alcanzo a ver, porque no tengo experiencia en delphi y voy aprendiendo sobre muchos conceptos de éste, a la vez. Si, a partir de la información que os presento, alguien conoce el motivo o lo sospecha, por el cual me falla el código le agradecería que me lo comentara. Un saludo y gracias de antemano. |
#4
|
||||
|
||||
Hola jocaro.
Por favor cuando incluyas código en tus mensajes usa TAG's para que sea más legible: En cuanto al código, no entiendo la lógica de la creación. Pareciera que deseas que FormBasDat sea el form principal, se oculte y se muestre SDIAppForm. Si es así, probá si de este modo logras lo que estás buscando:
Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 30-12-2011 a las 16:17:12. |
#5
|
|||
|
|||
Access violation (llamada a componente de otro form)
Hola
He seguido leyendo y probando y he conseguido resolver el problema Con el código original en el cual el form FormBasDat se creaba en el fichero.dpr la aplicación lanzaba un "access violation". Parece que el form no se ha creado cuando se utiliza en el siguiente form codificado en fichero.dpr (SDIMAIN), aunque desconozco el motivo Con la creación de FormBasDat en el evento oncreate del form SDIMAIN, justo antes de referirse a él, la aplicación funciona correctamente procedure TSDIAppForm.EstablecerInicio(Sender: TObject); begin FormBasDat := TFormBasDat.Create(Application); FormBasDat.ConexionBdSqlite.Connected := True; FormBasDat.ConexionBDSqlite.StartTransaction; end; Un saludo y gracias |
#6
|
||||
|
||||
Por favor, tal y como te ha comentado ecfisa, recuerda poner etiquetas (tags) al código, gracias por tu colaboración.
Ejemplo: . |
#7
|
|||
|
|||
Access violation (llamada a componente de otro form)
Gracias ecfisa, tendré en cuenta lo que me comentas de poner tags el código.
En cuanto a la lógica te comento que el form principal es SDIAppForm, de hecho al principio era el único existente, ahí estaba todo el código de la aplicación. Posteriormente me planteé organizar un poco dicho código y saque lo referente a base de datos (es decir componentes de conexión, data sources, etc.) a otro form llamado FormBasDat. La idea era crear el form de base de datos al principio y posteriormente crear el form principal, hacerlo visible y poder acceder desde él a FormBasDat, para utilizar sus conexiones. He conseguido mi propósito cambiando el lugar donde creo FormBasDat como indico en otro de los mensajes. Espero haberme explicado al menos lo suficiente para hacerme entender. Un saludo y gracias por vuestro tiempo y atención. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Access Violation | Alejo15x | API de Windows | 2 | 09-11-2010 02:36:04 |
access violation | chona | Varios | 2 | 31-10-2006 01:36:04 |
Access violation at .... | Perio | Varios | 5 | 07-02-2006 15:50:36 |
Access Violation ..... | MADV01 | Varios | 2 | 24-03-2004 16:01:33 |
Access violation | Giasl | Varios | 6 | 07-05-2003 12:35:51 |
|