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 24-06-2008
Avatar de Alejandrina
Alejandrina Alejandrina is offline
Miembro
 
Registrado: mar 2007
Ubicación: Medellin
Posts: 46
Poder: 0
Alejandrina Va por buen camino
Question EAccessViolation

Hola a todos,
Tengo la siguiente dificultad al correr el siguiente procedimiento la aplicación me muestra un error de 'Access Violation at address 005B91C9 in module 'XXXXX.exe'. Read of address 00002F0'.

Código:
procedure TFrmProductoEmpaque.DBEcicloKeyPress(Sender: TObject;
  var Key: Char);
begin
     if key=#13 then
        begin
           Key := #0;
           cicloactual:=DBEciclo.Text;
           if cicloinicial<>cicloactual then
             begin
               swciclo:='1';
               if swciclo='1' then
                 begin
                   Dmsip.Tblproductos['fechaciclop']:=now;
                   Dmsip.TblProductos['usuariociclop'] := userw;
                 end;
               swciclo:='0';
             end;
           perform(wm_nextdlgctl,0,0);
           DmSip.Tblproductos.edit;
           DBEFechaCiclo.text:=datetimetostr(now);
           DBEUsuarioCiclo.Text:=userw;
           DmSip.TblProductos.post;
        end;
end;
El cambio en el campo ciclo se realiza pero la aplicación se me bloquea y no puedo cambiar de registro.

Espero haberme hecho entender y sobre todo que me puedan ayudar.

Gracias
__________________
Alejandrina
Responder Con Cita
  #2  
Antiguo 24-06-2008
Avatar de Fenareth
[Fenareth] Fenareth is offline
Miembro Premium
 
Registrado: oct 2007
Ubicación: Guadalajara, Jalisco, México
Posts: 494
Poder: 17
Fenareth Va por buen camino
Cita:
Empezado por Alejandrina Ver Mensaje
Hola a todos,
Tengo la siguiente dificultad al correr el siguiente procedimiento la aplicación me muestra un error de 'Access Violation at address 005B91C9 in module 'XXXXX.exe'. Read of address 00002F0'.

Código Delphi [-]
procedure TFrmProductoEmpaque.DBEcicloKeyPress(Sender: TObject;
  var Key: Char);
begin
     if key=#13 then
        begin
           Key := #0;
           cicloactual:=DBEciclo.Text;
           if cicloinicial<>cicloactual then
             begin
               swciclo:='1';
               if swciclo='1' then
                 begin
                   Dmsip.Tblproductos['fechaciclop']:=now;
                   Dmsip.TblProductos['usuariociclop'] := userw;
                 end;
               swciclo:='0';
             end;
           perform(wm_nextdlgctl,0,0);
           DmSip.Tblproductos.edit;
           DBEFechaCiclo.text:=datetimetostr(now);
           DBEUsuarioCiclo.Text:=userw;
           DmSip.TblProductos.post;
        end;
end;

El cambio en el campo ciclo se realiza pero la aplicación se me bloquea y no puedo cambiar de registro.

Espero haberme hecho entender y sobre todo que me puedan ayudar.

Gracias
En una línea asignas a swciclo:= '1' y en la siguiente línea pones un if swciclo:= '1' then... esa condición siempre se cumplirá no ? Pero esa es solo una observación ...

Has intentado correr el programa con F7 o F8 para saber exactamente en qué linea te provoca el error ?... Creo que tiene que ver con la función perform que usas...

Última edición por Fenareth fecha: 24-06-2008 a las 20:48:24.
Responder Con Cita
  #3  
Antiguo 03-07-2008
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Coincido con fenareth la asignación a swciclo no tiene sentido, pero eso no produce el error como tampoco lo hace el perform.
El único error que puedo suponer es que la tabla no esté en dsEdit cuando haces:
Código Delphi [-]
if swciclo = '1' then 
begin    
  Dmsip.Tblproductos.Edit   //  esta la tabla en dsEdit ????
  Dmsip.Tblproductos['fechaciclop']:=now;
  Dmsip.TblProductos['usuariociclop'] := userw;
end;
Reproduje el código usando un ttable con el mínimo requisito para que funcione la procedure. No me dio el error 'Access violation' pero sólo uso lo que envias. Revisa los DataSource de los controles DataAware... también controla como llamas al Form y como lo cierras. Espero que te ayude en algo, suerte

Última edición por ecfisa fecha: 03-07-2008 a las 15:20:50.
Responder Con Cita
  #4  
Antiguo 05-08-2008
Avatar de Alejandrina
Alejandrina Alejandrina is offline
Miembro
 
Registrado: mar 2007
Ubicación: Medellin
Posts: 46
Poder: 0
Alejandrina Va por buen camino
EAccessViolation

Despues de un largo tiempo....
Eh vuelto a retomar este error y aun continua efectivamente Fenareth tiene razón me sobra el swciclo, tambien sigo el consejo de ecfisa pero aún así el error continua. Corriendo el programa con F8 el error me sale en la siguiente lienea:

Código Delphi [-] if (copy(FrmProductos.DBECodigo.Text,1,2)='43') or (copy(FrmProductos.DBECodigo.Text,1,2)='35') or (copy(FrmProductos.DBECodigo.Text,1,2)='44') or (copy(FrmProductos.DBECodigo.Text,1,2)='45') or (copy(FrmProductos.DBECodigo.Text,1,2)='42')then

El procedimiento completo es el siguiente, espero me puedan dar algo de luces ya que no se que hacer. Gracias

Código Delphi [-]procedure TDMsip.TblproductosBeforePost(DataSet: TDataSet);
begin
if (TblUsuarios['codigo_area']='002') or (userw = 'SYSDBA') or (userw = '001') then
else
//se vuelve a validar para que produccion pueda modificar el campo ciclo
if (TblUsuarios['codigo_area']='001') or (userw = '001') then
else
begin
ShowMessage('Usuario no autorizado para Insertar o Modificar');
abort;
end;
if TblProductos['referencia']='' then
begin
ShowMessage('Se requiere la referencia del producto');
abort;
end;
if DmSip1.TblCriticaProducto.locate('referencia',TblProductos['referencia'],[]) then
begin
DmSip1.TblCriticaProducto.edit;
DmSip1.TblCriticaProducto['productos'] := 'X';
DmSip1.TblCriticaProducto.post;
end;
if DmSip1.TblCriticaProductoDecorado.locate('referencia',TblProductos['referencia'],[]) then
begin
DmSip1.TblCriticaProductoDecorado.edit;
DmSip1.TblCriticaProductoDecorado['productos'] := 'X';
DmSip1.TblCriticaProductoDecorado.post;
end;
if TblProductos['plano'] = null then
TblProductos['plano'] := '';
if TblProductos['plano_interno'] = null then
TblProductos['plano_interno'] := '';
if (copy(FrmProductos.DBECodigo.Text,1,2)='43') or (copy(FrmProductos.DBECodigo.Text,1,2)='35') or (copy(FrmProductos.DBECodigo.Text,1,2)='44') or (copy(FrmProductos.DBECodigo.Text,1,2)='45') or (copy(FrmProductos.DBECodigo.Text,1,2)='42')then
else
if (TblProductos['plano']='') and (TblProductos['plano_interno']='') then
begin
ShowMessage('Debe digitar al menos un plano');
abort;
end;
//end;
if TblProductos['plano']<> '' then
begin
if TblProductos['plano_interno']='' then
else
begin
ShowMessage('Solo se debe digitar un plano');
abort;
end;
end;
if ingresarp then
TblProductos['listaprecios']:='N';
//OJO CAMBIO PARA PODER GRABAR FECHA MIRAR QUE PASA
//OJO MIRAR QUE PASA PARA CAMBIA EL ESTADO EN REFERENCIA SALE ERROR
if cambiapeso then
begin
TblColorProducto.locate('referencia',TblProductos['referencia'],[]);
TblColorProducto.edit;
TblColorProducto['fechamodificacion']:= now;
TblColorProducto['usuario']:= userw;
TblColorProducto.post;
end;
cambiapeso := false;
end;
__________________
Alejandrina
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
EAccessViolation elorza Varios 2 26-12-2007 11:07:32
Error EAccessViolation chele Firebird e Interbase 0 09-11-2004 16:51:21
EAccessViolation Ester Varios 16 10-09-2004 16:33:20
Error EAccessViolation.... JorgeBec Conexión con bases de datos 5 18-02-2004 22:34:11


La franja horaria es GMT +2. Ahora son las 07:54:43.


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