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 al cerrar un formulario
Qué tal foro, espero que este sea el sitio en donde colocar este hilo.
Sé que éste tema ya ha sido bastante contestado, pero realmente no se que es lo que ha ocurrido con mi formulario. Estoy creando una aplicación y como en otros estoy poniendo un formulario de Login, lo estoy haciendo del siguiente modo: En el programa principal Código:
program Orcode; uses Forms, main in 'main.pas' {frm_main}, fLogin in 'fLogin.pas' {frm_login}, fDataModule in 'fDataModule.pas' {DataModule1: TDataModule}, fEntidad in 'fEntidad.pas' {frm_entidad}; {$R *.res} var w_user, w_passwd : String; begin Application.Initialize; Application.MainFormOnTaskbar := True; Application.CreateForm(TDataModule1, DataModule1); Application.CreateForm(Tfrm_main, frm_main); if Tfrm_login.Execute then begin Application.MessageBox('Bienvenido.', 'Bienvenido') ; Application.Run; end; end. Código:
unit fLogin; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, AdvSmoothLabel, AdvSmoothButton, StdCtrls, ZConnection, main, fDataModule; type Tfrm_login = class(TForm) Edit1: TEdit; Edit2: TEdit; sBtn_Aceptar: TAdvSmoothButton; AdvSmoothLabel1: TAdvSmoothLabel; AdvSmoothLabel2: TAdvSmoothLabel; ZConnection1: TZConnection; procedure sBtn_AceptarClick(Sender: TObject); private { Private declarations } public { Public declarations} class function Execute : boolean; end; var frm_login: Tfrm_login; implementation {$R *.dfm} var w_intentos: Integer; class function Tfrm_login.Execute: boolean; begin with Tfrm_login.Create(nil) do try w_intentos:=1; Result := ShowModal = mrOk; finally Free; end; end; Para el botón Aceptar pongo lo siguiente, me parece que aquí no está el problema, porque funciona correctamente y para el problema que me aqueja ni siquiera lo utilizo. Pero lo pongo por si a alguien le sirve parte del código, a mí me funcionó bastante bien. Me estoy conectando a un servidor Postgres con los componentes Zeos Código:
procedure Tfrm_login.sBtn_AceptarClick(Sender: TObject); begin try // Verifica que haya conexión con la base de datos usando un usuario válido zConnection1.User := 'postgres'; zConnection1.Password := 'postgres'; zConnection1.Connected := True; zConnection1.Connected := False; try // Si hay conexión con el servidor entonces ahora se intenta la conexión con los datos del usuario zConnection1.User := Edit1.Text; zConnection1.Password := Edit2.Text; zConnection1.Connected := True; zConnection1.Connected := False; frm_main.w_user := Edit1.Text; // Se envía el nombre del usuario válido a la variable del formulario principal frm_main.w_passwd := Edit2.Text; // Se envía la contraseña del usuario válido a la variable del formulario principal ModalResult := mrOK; except on E: Exception do begin Application.MessageBox(PChar('Nombre de usuario o contraseña incorrectos. Verifique sus datos.'+#13+ 'Le quedan '+IntToStr(3-w_intentos)+' intentos.'),'Usuario inválido', MB_OK+MB_ICONINFORMATION); if w_intentos<3 then begin w_intentos := w_intentos +1; Edit1.SetFocus // Se coloca en el primer control para volver a escribir el nombre de usuario end else ModalResult := mrAbort; end; end; except on E: Exception do begin {WriteLn(E.Message);} Application.MessageBox('No hay conexión con la base de datos. Verifique la conexión con el servidor y que la base de datos esté correctamente configurada','Base de datos no disponible',MB_OK+MB_ICONERROR); ModalResult := mrAbort end; end; end; end. Pero eso no lo hacía antes, comento, hace ya un rato que no le modificaba nada. Al ir siguiendo al depurador, el error ocurre al llegar al "Free" de la clase "Execute". Y al ir siguiendo el free, el error lo manda algo dentro de Zeos, pero eso no lo hacía. Espero haberme explicado. Ya le di muchas vueltas y no hallo nada que hubiese modificado. Gracias de antemano a todos. Última edición por elaguna fecha: 12-11-2010 a las 02:04:55. Razón: Error en las etiquetas para el estilo del código |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Access Violation al cerrar .exe | mArTaLF | Varios | 3 | 16-10-2007 09:11:37 |
Cambiar propiedad de componente del formulario padre al cerrar el formulario hijo | jzginez | OOP | 5 | 22-06-2007 21:40:51 |
Cerrar conexión al cerrar formulario | arantzal | Conexión con bases de datos | 5 | 09-08-2006 12:43:52 |
Access Violation al cerrar ClientSocket | auveele | Internet | 0 | 15-11-2004 00:39:53 |
Access violation | Giasl | Varios | 6 | 07-05-2003 12:35:51 |
|