FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Formularios Violation Access
Buenas tardes, foristas!
Ante todo un cordial saludo a todos.. me estoy iniciando en el delphi ( vengo de visual basic ) y tengo varias dudas que se me vienen presentando en mi proyecto, estoy haciendo un programa cliente servidor, en mysql y delphi 2010, pero tengo varios problemitas en cuanto a los Violation access, he estado leyendo y a lo mejor puede ser porque no me va muy bien con eso de que hay que liberar y destruir los form .. entonces a ver tengo 3 pantallas, una es un login, la siguiente es principal y la siguiente es agencia, seria algo asi: Login Principal > aca tiene un mainmenu donde al darle click a Agencia se despliegan otro menus y en ese menu esta un menuitem que selecciona el formulario Agencia y lo muestro con un .show y lo declaro en uses Agencia. pero me salta un error de violation access y lo he probado en diferentes maquinas con delphi 2010 y sigue saltando ese error, posteare el codigo para que lo vean source project Código:
program Project1; uses Forms, Controls, Login in 'Login.pas' {frmLogin}, Principal in 'Principal.pas' {frmPrincipal}, Agencia in 'Agencia.pas' {frmAgencia}; {$R *.res} var Respuesta: integer; begin Application.Initialize; Application.Title := 'WB System'; frmLogin := TfrmLogin.Create(Application); frmprincipal := Tfrmprincipal.Create(Application); try Respuesta := frmLogin.ShowModal; if Respuesta = mrOK then begin Application.CreateForm(TfrmPrincipal, frmPrincipal); Application.CreateForm(TfrmAgencia, frmAgencia); Application.CreateForm(TfrmLogin, frmLogin); Application.Run; end; finally frmLogin.Free; end; end. Código:
unit Login; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Mask, DBCtrls, UniProvider, MySQLUniProvider, DB, DBAccess, Uni, MemDS; type TfrmLogin = class(TForm) UniConnection1: TUniConnection; UniTable1: TUniTable; UniDataSource1: TUniDataSource; MySQLUniProvider1: TMySQLUniProvider; Button1: TButton; qry: TUniQuery; txtusu: TEdit; txtpass: TEdit; qryuser_login: TStringField; qryuser_password: TStringField; Button2: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; lblintentos: TLabel; lblverifique: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure txtusuKeyPress(Sender: TObject; var Key: Char); procedure txtpassKeyPress(Sender: TObject; var Key: Char); private { Private declarations } public { Public declarations } end; var frmLogin: TfrmLogin; nintentos: integer; veces: integer; implementation uses Principal; {$R *.dfm} procedure TfrmLogin.Button1Click(Sender: TObject); begin qry.SQL.Clear; qry.SQL.Add(' select user_login'); qry.SQL.Add(' , user_Password'); qry.SQL.Add(' from Login'); qry.SQL.Add(' where user_login = Upper(:UserLogin)'); qry.SQL.Add(' and '); qry.SQL.Add(' user_password = (:UserPassword)'); qry.Params[0].Value := UpperCase(Trim(txtusu.Text)); qry.Params[1].Value := Trim(txtpass.Text); qry.Open; if qry.RecordCount > 0 then begin frmprincipal.Show; frmlogin.Hide; end else begin nIntentos := nIntentos + 1 ; {Intentos del login} veces := 3; {Veces limite de login} lblIntentos.Visible := true; lblIntentos.Caption := 'Intentos Restantes: ' + inttostr(veces-nIntentos); lblVerifique.Caption := 'Login Invalido, Verifique!'; if (nIntentos < veces) then begin txtusu.Text := ''; txtpass.Text :=''; txtusu.SetFocus; end else if (nIntentos = veces) then begin txtusu.Text := ''; txtpass.Text :=''; txtusu.SetFocus; frmLogin.ModalResult := mrCancel; Application.MessageBox( 'Maximo de Intentos, Sera notificado al Administrador', 'Acceso denegado', MB_ICONSTOP ); end; end; end; procedure TfrmLogin.Button2Click(Sender: TObject); begin close; end; procedure TfrmLogin.txtpassKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then { if it's an enter key } begin Key := #0; { eat enter key } Perform(WM_NEXTDLGCTL, 0, 0); { move to next control } end end; procedure TfrmLogin.txtusuKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then { if it's an enter key } begin Key := #0; { eat enter key } Perform(WM_NEXTDLGCTL, 0, 0); { move to next control } end end; end. Código:
unit Principal; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, buttons , StdCtrls; type TfrmPrincipal = class(TForm) MainMenu1: TMainMenu; Archivo1: TMenuItem; CerrarPrograma1: TMenuItem; Agencias1: TMenuItem; RegistrarAgencia1: TMenuItem; RegistrarUsuario1: TMenuItem; Loterias1: TMenuItem; RegistrarAgencia2: TMenuItem; ModificarAgencia1: TMenuItem; Borrar1: TMenuItem; Registrar1: TMenuItem; Modificar1: TMenuItem; Borrar2: TMenuItem; procedure CerrarPrograma1Click(Sender: TObject); procedure RegistrarAgencia2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmPrincipal: TfrmPrincipal; implementation uses agencia; {$R *.dfm} procedure TfrmPrincipal.CerrarPrograma1Click(Sender: TObject); begin application.Terminate; end; procedure TfrmPrincipal.RegistrarAgencia2Click(Sender: TObject); begin frmagencia.Show; end; end. Código:
unit Agencia; interface uses StdCtrls, Classes, Windows, Messages, SysUtils, Variants, Graphics, Forms, Dialogs, Controls; type TfrmAgencia = class(TForm) lblModuloAgencias: TLabel; gbDatosAgencia: TGroupBox; edtnombreagencia: TEdit; edtresponsable: TEdit; lblnombreagencia: TLabel; lblresponsable: TLabel; edtnumeroagencia: TEdit; lblnroagencia: TLabel; gblimiteventas: TGroupBox; lblterminales: TLabel; lbltriples: TLabel; lblzodiacales: TLabel; edtterminales: TEdit; edttriples: TEdit; edtzodiacales: TEdit; btnaceptar: TButton; btncancelar: TButton; lblregistro: TLabel; private { Private declarations } public { Public declarations } end; var frmAgencia: TfrmAgencia; implementation {$R *.dfm} end. Access Violation at address 004AFBB6 in module 'project1.exe'. Read of Address 00000384 si alguno me puede guiar sobre evitar estos access violation en cuando a la llamado de formularios me gustaria mucho! saludos Y gracias por su atencion a mi post! |
#2
|
||||
|
||||
Tenemos a un converso jejeje
y en que linea te sale el error?
__________________
Dulce Regalo que Satanas manda para mi..... |
#3
|
||||
|
||||
Hola
A mi esto no me suena: Saludos
__________________
Siempre Novato |
#4
|
|||
|
|||
Eso es lo extraño no me marca error en el ninguna linea, si le doy en pause me marca es el CPU, es esto
ntdll.DbgUiRemoteBreakin: 7C96077B 6A08 push $08 de resto solo me marca ese access violation. |
#5
|
||||
|
||||
Hola
Corre o de plano no corre ni de principio ?. Sigo con lo mismo, no me suena crear dos veces los formularios, es evidente que esta mal. Saludos
__________________
Siempre Novato |
#6
|
|||
|
|||
Si corre, hasta el form principal, todo marcha bien! cuando intento llamar al formulario Agencia, me genera ese violation access
|
#7
|
|||
|
|||
Cita:
Código:
program Project1; uses Forms, Controls, Login in 'Login.pas' {frmLogin}, Principal in 'Principal.pas' {frmPrincipal}, Agencia in 'Agencia.pas' {frmAgencia}; {$R *.res} var Respuesta: integer; begin Application.Initialize; Application.Title := 'WB System'; frmLogin := TfrmLogin.Create(Application); frmprincipal := Tfrmprincipal.Create(Application); frmagencia := Tfrmagencia.Create(Application); frmagencia.Hide; frmlogin.ShowModal; {try Respuesta := frmLogin.ShowModal; if Respuesta = mrOK then begin Application.Run; end; finally frmLogin.Free; end; } end. |
#8
|
||||
|
||||
Hola
Bueno segun lo que veo creas los forms siempre y cuando el form login sea ok, tal vez no se crea bien el form agenda, no lo se. Me extraña mucho esta manera de hacer las cosas. Haces un simple show a un form que se supone se ha creado. De todos modos, no es la mejor forma de llamar a los forms, para mi. Saludos
__________________
Siempre Novato |
#9
|
||||
|
||||
Hola.
Revisá que frmAgencia esté incluída en Available forms en: Project -> Options -> Auto-create Forms. Si no es así cambiá esta línea: Por:
Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#10
|
|||
|
|||
Cita:
|
#11
|
|||
|
|||
Gracias amigo, lo solvente con eso! esa es la forma de llamar los formularios solo que como comente arriba vengo de otro compilador y me estoy adaptando.. Gracias por tu atencion a mis dudas.. pronto estare de nuevo por aca.. pero adelantare! con eso ya espero no me salte mas el problema de la violation access xD
Última edición por asdbernardo fecha: 22-09-2011 a las 19:04:34. Razón: me falto citar xD |
#12
|
||||
|
||||
Hola
En delphi también, con solo un form.Show ya esta, siempre que lo tengas creado al iniciarse el programa. Pero: Delphi da la opción de crearlo cuando uno desee, no necesariamente al inicio. Esto lo que hace para que el programa corra mejor al iniciarse. Saludos
__________________
Siempre Novato |
#13
|
|||
|
|||
Cita:
Gracias caral, Ahora si ya me estoy familiarizando.. Ya estoy entiendiendo lo que es el delphi, ahora me toca aprender mas sobre las excepciones, los erroes con eso ... ya que tengo que saber controlar los errores .. pero aun no le llego, estoy con mi aplicacion en el login, sabes que estoy usando Unidac con delphi 2010, y tengo el componente uniconnection activado como true en la conexion para que cuando el login entre de una vez cargue la base de datos.. la cuestion esta que me sale Socketexception cuando digamos por razones ajenas se cae el servidor, o no se puede conectar.... y es por ese mismo problema salta el error socketexcepcion, pero no se como comprobarlo, activarlo en modo codigo, si hay conexion que proceda a colocarlo como true, sino lo hay solamente que muestre el login y me diga que no hay conexion pero la verdad ya tengo tiempo en eso.. y no consigo, he leido sobre el try/except/finally y aun no puedo controlarlo .. jeje si sabes de algo! me cuentas.. Saludos |
|
|
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 | Carliviris | Varios | 5 | 12-05-2006 19:21:45 |
access violation | chilenauta | Impresión | 15 | 15-12-2004 19:45:51 |
Access violation | Giasl | Varios | 6 | 07-05-2003 12:35:51 |
|