Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-11-2008
ale_metall ale_metall is offline
Miembro
 
Registrado: sep 2007
Posts: 53
Poder: 17
ale_metall Va por buen camino
mensaje de error

hola gente, esta vez consulto por el siguiente mensaje de error que me aparece al ejecutar la aplicacion y presionar un boton. y luego se cuelga el prog.

Proyect1.exe raised exception class EAccessViolation with message 'access violation at address 00002E73. Read of address 00002E73'. Process stopped. Use Step or Run to continue.

Alguien sabe a q se refiere el error?? necesitan el codigo o se trata de algo externo?? parece una direccion de memoria, pero no se!!! reinicie el sistema y el win pero sigue ocurriendo!!!

delphi6

gracias...
Responder Con Cita
  #2  
Antiguo 23-11-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
¿La aplicación trabaja con bases de datos?, si es así puede que no está encontrando la BD, si no es así, necesitamos código

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #3  
Antiguo 23-11-2008
ale_metall ale_metall is offline
Miembro
 
Registrado: sep 2007
Posts: 53
Poder: 17
ale_metall Va por buen camino
si, con base de datos en paradox, la primera vez q presiono el boton va bien, en la segunda se cuelga... el codigo es un choclazo, lo paso?? porq siempre lo use y nunca me daba ese error y comenzo de repente sin haber editado el codigo...
Responder Con Cita
  #4  
Antiguo 23-11-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Sólo debes pasar el código donde te da el error, ¿a qué te refieres con choclazo?

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #5  
Antiguo 23-11-2008
ale_metall ale_metall is offline
Miembro
 
Registrado: sep 2007
Posts: 53
Poder: 17
ale_metall Va por buen camino
Código Delphi [-]
procedure TForm16.SpeedButton1Click(Sender: TObject);
var band:boolean; usuarioactivo,consulta:string; ultimo,ultimo1,NroUsuario,categoria:integer; TotalAnterior:real;
begin
 if (edit1.Text='') or (edit2.text='') then
   begin
     MessageBox(Handle,
     PChar('Debe completar los campos solicitados antes de iniciar ' + #13#10 +
     'sesión.'),PChar('Datos Erroneos'),
     MB_OK + MB_ICONSTOP + MB_DEFBUTTON1 + MB_APPLMODAL);
     edit1.SetFocus;
    end
  else
   begin
    band:=false;
    table1.Open;
    table1.First;
    repeat
     if table1.FieldByName('Loggin').asstring=edit1.Text
      then
       begin
           band:=true;
           if table1.Fieldbyname('CantIntentos').AsInteger>=3
              then
                 begin
                   MessageBox(Handle,
                   PChar('La cuenta ha sido bloqueada por ingresar repetidos datos erroneos, contactese con el ' + #13#10 +
                   'administrador del sistema.'),
                   PChar('Reiterados ingresos erroneos'),
                   MB_OK + MB_ICONINFORMATION + MB_DEFBUTTON1 + MB_APPLMODAL);
                   edit1.clear;
                   edit2.Clear;
                   edit1.setfocus;
                   end
        else
          begin
            if table1.FieldByName('Password').asstring=edit2.Text
                 then
                   begin              //tabla Usuarios
                    table1.edit;
                    table1.FieldByName('Activo').asboolean:=True;
                    table1.FieldByName('CantIntentos').asinteger:=0;
                    usuarioactivo:=table1.FieldByName('Loggin').asstring;
                    NroUsuario:=table1.FieldByName('NroUsuario').asinteger;
                    table1.Post;
                    table1.Close;
                    form1.Table1.Open;
                    form1.Table2.Open;
                    form1.Table3.Open;
                    form1.Table4.Open;
                    form1.timer1.Enabled:=true;
                    edit1.clear;
                    edit2.clear;
                    edit1.setfocus;
                    form16.Hide;
                    form22.destroy;
                    form10.Table5.Open;    //Tabla totalCajaTurno
                    form10.table5.last;    //crea un registro para el total de la caja durante la sesion iniciada. (table5)
                    ultimo:=form10.table5.fieldbyname('NroTurno').asinteger;
                    TotalAnterior:=form10.table5.fieldbyname('Total').ascurrency;
                    form10.table5.insert;
                    form10.table5.fieldbyname('NroTurno').asinteger:=ultimo+1;
                    form10.table5.fieldbyname('FechaHoraInicio').asstring:=datetimetostr(now);
                    form10.table5.fieldbyname('CodUsuario').asinteger:=NroUsuario;
                    form10.Table5.Post;
                    form10.Table1.Open;
                    form10.table1.last;
                    ultimo1:=form10.table1.FieldByName('NroMovimiento').asinteger;
                    form10.table1.edit;
                    form10.table1.Insert;
                    form10.table1.FieldByName('NroMovimiento').asinteger:=ultimo1+1;
                    form10.table1.fieldbyname('Fecha').AsDateTime:=(Date);
                    form10.table1.fieldbyname('Detalle').asstring:='Total Turno Anterior.';
                    form10.table1.fieldbyname('Entrada').AsCurrency:=TotalAnterior;
                    form10.table1.fieldbyname('Salida').AsCurrency:=0;
                    form10.table1.fieldbyname('Facturado').AsBoolean:=false;
                    form10.table1.FieldByName('CodES').asinteger:=0;
                    form10.table1.FieldByName('CodResponsable').asinteger:=form10.table5.FieldByName('CodUsuario').asint  eger;
                    form10.table1.FieldByName('CodTurno').asinteger:=ultimo+1;
                    form10.table1.Post;
 
                    form10.table5.last;
                    form10.query1.SQL.Clear;
                    consulta:='select (((SUM(Entrada))-(SUM(Salida)))) as TotalTurno from CajaDiaria ';
                    consulta:=consulta+'where CodTurno=:valor';
                    form10.query1.SQL.Add(consulta);
                    form10.query1.ParamByName('valor').asinteger:=form10.table5.FieldByName('NroTurno').asinteger;
                    form10.query1.Open;
                    form10.query1.Active;
                    form10.Table5.edit;
                    form10.Table5.FieldByName('Total').Value:=form10.Query1.fieldByName('TotalTurno').Value;
                //Table5.FieldByName('Total').Ascurrency:= strtofloat(Query1.fieldByName('TotalTurno').asString);
                    form10.Table5.Post;
                    form10.Table1.close;
                    form10.Table5.close;

                   // form10.Table5.Close;
                    form1.Visible:=true;
                    form1.show;
                    form1.table4.First;
   while form1.table4.Eof=false do                           //Busca el usuario activo, guarda la categoria y
    begin                                              // filtra la tabla categoria por esa categoria.
    if form1.table4.FieldByName('Activo').asboolean= true
      then categoria:=form1.table4.FieldByName('NroCategoria').asinteger;
     form1.table4.Next;
     end;
     if categoria=2 then
        begin
         form1.speedbutton10.Enabled:=false;
         form1.speedbutton13.Enabled:=false;
         form1.speedbutton15.Enabled:=false;
         form1.speedbutton16.Enabled:=false;
         form1.speedbutton17.Enabled:=false;
         form1.speedbutton18.Enabled:=false;
         form1.speedbutton7.Enabled:=false;
         end;
        end
                  else
                   begin
                    MessageBox(Handle,
                    PChar('La Contraseña no corresponde al usuario Ingresado.Vuelva a ingresarla, si la ha olvidado contactese con el administrador del sistema.'),
                    PChar('Contraseña Erronea'),
                    MB_OK + MB_ICONSTOP + MB_DEFBUTTON1 + MB_APPLMODAL);
                    table1.Edit;
                    table1.FieldByName('CantIntentos').asinteger:=table1.FieldByName('CantIntentos').asinteger+1;
                    table1.Post;
                    edit2.Clear;
                    edit2.setfocus;
                   end;
          end;
       end
      else
         table1.Next;
    until (table1.eof=true) or (band=true);
   if band=false then
    begin
      MessageBox(Handle, 
             PChar('Asegúrese de ingresar datos correctos.'),
             PChar('Usuario Inexistente'),
             MB_OK + MB_ICONEXCLAMATION + MB_DEFBUTTON1 + MB_APPLMODAL);
      edit1.Clear;
      edit2.clear;
      edit1.setfocus;
    end;
end;
end;

eso es un choclazoo!!

me tengo q ir a laburar, mas tarde t respondo!! pero insisto, comenzo de repente el error y no habia editado este codigo...

saludos
Responder Con Cita
  #6  
Antiguo 23-11-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Ya me lo imaginaba
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #7  
Antiguo 23-11-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Cita:
Empezado por enecumene Ver Mensaje
Sólo debes pasar el código donde te da el error, ¿a qué te refieres con choclazo?

Saludos.
Me imagino que es un Choclo grande
Choclo en algunos paises es Elote, Maiz, ojuela.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #8  
Antiguo 23-11-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Pues es un Elote/Maiz/Hojuela GIGANTE
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #9  
Antiguo 23-11-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Despues de ver este Choclo enorme y sin sentido diria que para hacer este Choclazo mejor usar un Datamodule y ordenar todo este ir y venir del form16 al 1 al 5 y no se cuantos mas.
En el momento que falle algo no se sabra donde esta el Choclo.
Otra cosa seria poner una Gallina por codigo y que empiece a descifrar el choclo.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #10  
Antiguo 24-11-2008
ale_metall ale_metall is offline
Miembro
 
Registrado: sep 2007
Posts: 53
Poder: 17
ale_metall Va por buen camino
Bueno, solo tengo q programar en delphi para aprobar una materia y no soy experto como udes.. simplemente digan q no pueden ayudarme y listo..

saludos...
Responder Con Cita
  #11  
Antiguo 24-11-2008
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Hola ale_metall.

No creo que haya que ponerse brusco. Entendemos tu apuro, pero a la vez esperamos que entiendas que no siempre es fácil ayudar con prontitud y eficacia. Y mantener cierto respeto es importante.

Tu caso no parece ser como muchos otros donde un alumno de programación básicamente solicita que le hagan la tarea (los deberes). Se nota que estás esforzándote en cumplir con el compromiso de la materia.

El error Access Violation es común cuando se está usando memoria de programa de forma inadecuada. La mayoría de las veces tiene que ver con variables objetos que son liberadas (destruidas) antes de tiempo o nunca inicializadas.

Por los datos que nos has proporcionado, pareciera que el programa intenta acceder, usar o hacer referencia a alguna parte de un objeto que anteriormente era válido, pero luego fue destruido. Ese objeto destruido prematuramente (o referido más de lo que es necesario) podría ser Form22, ya que es el único que a simple vista liberas en el código.

Una segunda llamada al manejador de evento SpeedButton1Click podría desembocar en una excepción Access Violation al llegar a la sentencia "form22.destroy", porque el objeto ya habría sido destruido en la primera ejecución del código.

Por otro lado te recomiendo estudiar temas relacionados con el depurador, como son los puntos de ruptura, las observaciones y la pila de llamadas. El depurador de Delphi es uno de los mejores que existen (si no es que el mejor). Es una herramienta integrada en el IDE que te permite seguirle la pista a cada pequeña cosa que hace tu programa al estar ejecutándose, y así descubrir más fácilmente la causa de los fallos.

Saludos.

Al González
Responder Con Cita
  #12  
Antiguo 24-11-2008
ale_metall ale_metall is offline
Miembro
 
Registrado: sep 2007
Posts: 53
Poder: 17
ale_metall Va por buen camino
si, en efecto como me destribiste era eso lo que sucedia... yo pude descubrirlo porq fui probando de forma manual y burda con un showmessage en diferentes partes del codigo y en el form22.destroy surge, la primera vez lo destruyo yl as veces siguientes que llamo al procedimiento en cuestion ya no hay q destruirlo porq no existe... era simplemente eso!!! graciasporla atencion

saludos...
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
Mensaje de error: Abstract Error Almd Internet 2 29-08-2008 00:32:12
Mensaje de Error Luis Felix Varios 4 24-10-2007 19:26:27
Mensaje de error creus Varios 2 02-11-2006 19:39:42
Mensaje de error BDE Lakecountry Conexión con bases de datos 10 19-07-2006 17:29:48
Mensaje de error Luli Varios 3 31-10-2005 13:59:02


La franja horaria es GMT +2. Ahora son las 01:47:42.


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