Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   error de Abstract error (https://www.clubdelphi.com/foros/showthread.php?t=72505)

ivantj24 23-02-2011 07:22:16

error de Abstract error
 
Holas a todos, soy nuevo aqui, y soy nuevo usando delphi, asi que disculpen si soy algo incoherente o manipulo mal las forms, llevo menos de un mes aprendiendo este lenguaje y me ha salido varios errores, uno de ellos es el Abstract error, el cual me sale al invocar una MDIChild en donde pongo un DBGrid que esta conectado a la MDIForm, les explico:

1.-MDIForm principal en donde hago la conexion a base de datos, con SQL Server, tengo ADOConnetion, DataSet, DataSource.

2.-Form fsStayOnTo que es la de login, hago que se invoque primero para que despues de usar un ADOQuery si es correcto se visualice o habilite la MDIForm Principal, poniendo destroy en la ventana de Inicio si el login es correcto.

3.-MDIChild que por medio de la MDIform Principal se crea y se genera esta ventana hija, el problema es que intento hacer un alta de usuarios en esta ventana hija, al crear, Usuarios>ALta de Usuario creo la ventana se invoca y conecto un DBGrid y uso el Unit1 de la ventana principal para conectarlo con el DataSet de la ventana principal para que se muestren las mismas altas que tengo o que se llevan acabo, pero cuando hago esto me marca error 'Abstract error', despues en otras ocaciones me salia Access violation.

no se si estoy creando mal el orden de las ventanas, por que tengo respaldos, y cuando hago la conexion del DBGrid es cuando me marca error, antes no, tengo un respaldo que uso antes del DBGrid y todo normal, pero despues de hacer la conexion me sale el error, no se si alguien me puede explicar, que puede ser o que? soy nuevo como les explico

Neftali [Germán.Estévez] 23-02-2011 10:00:40

En estos casos es más sencillo crear un pequeño proyecto de ejemplo donde aparezca el error y subirlo. Hay muchas cosas que pueden provocar un Access Violation y así explicado "de palabra" es difícil acertar qué puedes ser.

Si es posible sube un proyecto de ejemplo donde salga el error que podamos probar.

ivantj24 23-02-2011 19:38:52

ok gracias por la sugerencia, mira uso 4 units, en la primera manejo esto, y estoy comenzando la aplicacion apenas por lo cual solo he probado hacer una MDIChild, y es aqui en donde me marca error por eso no he continuado,

Código Delphi [-]
//unit 1

procedure TfrmPrincipal.Timer1Timer(Sender: TObject);
begin
StatusBar1.Panels.Items[2].Text:= 'Hora Atual: '+ TimeToStr(time);
StatusBar1.Panels.Items[3].Text:= 'Fecha Atual: '+ DateToStr(date);
end;

procedure TfrmPrincipal.DardeAlta1Click(Sender: TObject);

begin
if frmAltaUsuario = Nil then
begin
Application.CreateForm(TfrmAltaUsuario, frmAltaUsuario);
frmAltaUsuario.Show;
end;
end;


procedure TfrmPrincipal.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
frmAltaUsuario := nil;
end;

end.

Código Delphi [-]
//unit2
esta es la que esta en estado de fsStayOnTop ya que es el Login, si el usuario y contrasenia estan bien entonces
begin
edtUsuario.Clear;
edtPassword.Clear;
frmPrincipal.Enabled:=True; //habilito el formulario Principal (unit1)
frmFondo.Destroy; //destruyo una form que pongo de fondo para que no se vea el formulario principal, es como un background y adelante de el solo queda el login para que no pueda continuar hasta que se logueen
frmInicioSesion.Destroy;//destruyo la form de Login para darle paso ahora si al formulario principal siempre y cuando este correcto
end;

Código Delphi [-]
//en la unit3 solo por el momento esto en el evento Onclose; ya que es la MDchild en la que quiero poner el DBgrid para que al dar de alta un usuario, tambien pueda ver que usuarios estan ya registrados pero aun no lo he hecho y es aqui el error que menciono a continuacion.

procedure TfrmAltaUsuario.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
end;


//y la unit 4 solo es un formulario de fondo, que se activa junto con el login para que no tengan acceso al formulario principal hasta que se logueen, es un fsStayOnTop sin nada de codigo

ahora todo bien, no pasa nada con ese codigo, pero si en la ventana MDIChil (unit3) coloco un DBGrid, el cual se conecta al DataSet que esta en la unit1(formulario principal), coloco 'uses unit1' y con ello lo conecto al DataSet1, y ejecuto el programa, para loguearme, me sale el loguin(unit2) y el background de fondo(unit4), entro correctamente con el user y password y al darle aceptar en el boton me marca el error como la imagen a continuacion



y me manda al project2 senialandome 'end'
Código Delphi [-]
program Project2;

uses
  Forms,
  Unit1 in 'Unit1.pas' {frmPrincipal},
  Unit2 in 'Unit2.pas' {frmInicioSesion},
  Unit3 in 'Unit3.pas' {frmAltaUsuario},
  Unit4 in 'Unit4.pas' {frmFondo};

{$R *.res}


begin
  Application.Initialize;
  Application.CreateForm(TfrmPrincipal, frmPrincipal);
  Application.CreateForm(TfrmFondo, frmFondo);
  Application.CreateForm(TfrmInicioSesion, frmInicioSesion);
  Application.Run;
end.


por favor si alguien me pudiera explicar que puede ser, ya me canse de comenzar el proyecto quitando algunos formularios y la idea principal que tenia, gracias

Neftali [Germán.Estévez] 24-02-2011 12:51:36

He arreglado un poco tu mensaje.
Me refería a que crearas un pequeño proyecto y lo subas como adjunto, para que los demás puedan compilarlo y modificarlo.

Es muco más fácil detectar errores que sólo viendo el código.

ivantj24 24-02-2011 19:07:02

sabes que me fije, que en los programas que tenia ese error de accessViolation y Abstrac error, y eso apenas lo voy probando, es que en la form1 tengo una imagen de fondo, en esa form1 no utilizo botones dentro del formulario, sino que todo lo mando a llamar desde el menu, un menu con varias opciones, asi que intente quitarle el TImage que tenia una imagen de fondo formato JPEG y con eso se quito el error, tenia 2 programas con esos 2 errores, cada uno con un error diferente, y en los 2 programas quitando la imagen de fondo en el unit1 el formulario principal ya no me genero el error, si alguien sabe o tu sabes por que esto te lo agradeceria, ya habia hecho un respaldo ayer, el cual estoy continuando pero sin imagenes, sin nada de fondo en las form, cambie la idea principal de mi proyecto pero lo que quiero es practicar y saber todo sobre este lenguaje, el proyecto es de la universidad asi que me interesa saber todo, hasta por que se generan los diferentes errores para no cometerlos, asi que si sabes de este motivo te lo agradeceria, repito solo quitando la imagen de fondo formato JPEG se corrigio el error o por lo menos ya no marca.

//y por la sugerencia de subir un archivo con el proyecto, al intentar poner un link me dice que aun no tengo la posibilidad de ponerlos, seguramente por que soy nuevo apenas 2 dias en el foro, pero si es necesario los envio si me dicen como, se los agradeceria, y gracias Neftali por la ayuda sobre la problematica que he tenido.

roman 24-02-2011 19:23:47

Flota en la internet una copia de delphi con la unidad jpeg.dcu dañada :rolleyes:

Uno de los efectos es el causar el error:

Cita:

Error reading Image1.Picture.Data: Accesss Violation at ...
¿Será..?

// Saludos

ivantj24 24-02-2011 20:42:37

Mira el error que marca es este, no menciona nada de un error de image como citas, lo marca como les decia en el project2 en ese archivo y no entiendo el motivo, solo con quitar la imagen ya no lo genera, les digo es una imagen comun y corriente en formato JPEG pero con el solo hecho de ponerla me genera ese error, y no solo es en el formulario principal, cuando recien comence y queria hacer la ventana de login, queria poner otra imagen en formato JPEG diferente a la del formulario principal y era el mismo resultado, me salia ese error, no entiendo el motivo espero me puedan explicar, o decir la mejor manera de poner de fondo en una cierta area una imagen sin que genere este error, por que ocupo poner imagenes de fondo como un logo en mis formularios. gracias

por cierto este error es el de EAccessViolation, el del DBGRid que describia enteriormente era el de Abstract error, pero como decia, quitando la imagen me quito ese error en otro programa que estab haciendo del mismo proyecto pero con otra idea derivada de la principal ya que por estos errores tuve que buscar opciones o alternativas.

no me deja poner imagenes me dice 'Aun no tienes permitido poner enlaces ni imagenes'

asi que aqui detallo el problema dice

'Project Project2.exe raised exception class EAccessViolation with message 'Access violation at address 004034A9 in module 'Project2.exe'. Read of address 436E7462'. Process stopped. Use Step or Run to continue'.

teniendo la imagen de fondo ese es el problema. si la quito ejecuto el programa sin problemas. que puede ser?

roman 24-02-2011 20:47:28

Bueno, como dice Neftali, podrías crear un proyecto con un sólo formulario en el que póngas una imagen jpg de fondo y nada más. Si te da el error, entonces empaca el código fuente y ponlo aquí.

// Saludos

ivantj24 24-02-2011 22:04:09

1 Archivos Adjunto(s)
creanme esta algo daniado esto, resulta que me paso algo extranio, modificando solo un pequenio detalle del programa que ejecuto y me sale error, ahora si se ejecuta sin problemas, no entiendo si asi trabaja delphi o que pasa, tengo en el formulario principal un menu, en una apartado tengo por decir algo, 'Camioneros2' :S:S, cambio el nombre de ese apartado y le pongo '------' para modificar el nombre y con el solo hecho de hacer eso la aplicacion se ejecuta normalmente, enserio creanme no se que pasa, me gaste 1 dia entero buscando explicacion para resolverlo y al final decidi hacerlo desde 0 sin imagenes y nada de fondo, el proyecto lo puedo subir para que lo vean, pero la base de datos no podre, no se si asi puedan ustedes mirar en que faya por que creanme estoy loco ya con estas cosas que con un pequenio cambio se ejecuta aunque no paresca. y otra cosa, hice varias pruebas a ver si con algo mas de cambios podria funcionar, el formulario 1 le cambio el nombre (caption) y tambien se ejecuta normalmente con todo y la imagen puesta, osea son pequenios cambios que no tienen logica, no es nada del codigo ya en si, es solo el disenio lo que cambio y se ejecuta normalmente, bueno espero ustedes puedan ver el codigo y no se las imagenes, disculpen si no envio la BD por que es del trabajo en donde estoy, saludos y gracias

con gusto les subo el archivo en un momento mas, aunque no se si lo puedan ejecutar sin la base de datos para que pudieran ver con el puro login que si entra cambiandole ese pequenio detalle, y no envie el .exe ya que pesa mucho y sobrepasa el limite de archivos que se pueden adjuntar,

ivantj24 24-02-2011 22:05:32

disculpen no puedo enviar la 3era parte dice que excedi el limite permitido :(

Neftali [Germán.Estévez] 25-02-2011 10:52:01

Cita:

Empezado por ivantj24 (Mensaje 391951)
disculpen no puedo enviar la 3era parte dice que excedi el limite permitido :(


Si lo comprimes todo y lo envías a la dirección de contacto del Club (que aparece en mi firma) yo mismo lo subo al hilo.

Es un inconveniente, el tema de los adjuntos, pero son precauciones que se deben tomar por el bien de los foros.

ivantj24 25-02-2011 19:30:39

muchas gracias por el consejo y ya envie el proyecto espero lo puedan verificar, y para saber si extoy haciendo algo mal, aunque no pueda enviar la BD por motivos de mi trabajo, muchas gracias de antemano

Neftali [Germán.Estévez] 25-02-2011 21:20:09

A esta cuenta:

no ha llegado ningun correo (acabo de mirarlo ahora mismo).

¿Seguro que lo has enviado bien?

ivantj24 26-02-2011 05:13:12

disculpa la tardansa en la respuesta, espere 5 minutos despues de enviarlo y no me llego ningun mensaje de error despues de mandarlo y ahorita despues de salir de trabajar voy viendo el correo y si me lo regreso, no entiendo que hago mal, lo comprimo en formato .zip, lo envio a esa misma direccion, en 'contacto' es asi como esta o pongo tu nombre? lo envie como contacto a esa misma direccion, y 2 veces me lo ha regreso y disculpa, hasta el lunes ire de nuevo al trabajo para reenviarlo por que no lo cargue a mi memoria usb, disculpa las molestias, ya que no lo tengo aqui el archivo de error :( gracias de todos modos por la ayuda y disculpa la molestia que causo, pero si sera hasta el lunes cuando vaya a la pc de mi trabajo ya que no lo traje conmigo pense que se habia enviado bien

Neftali [Germán.Estévez] 28-02-2011 11:19:02

A esta dirección:



Tal como está escrita ahí.


La franja horaria es GMT +2. Ahora son las 14:18:35.

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