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 16-09-2011
jsc jsc is offline
Miembro
 
Registrado: nov 2003
Posts: 144
Poder: 21
jsc Va por buen camino
Fichero de Texto: Log.txt

tengo una aplicacion casi acabada y tengo intencion de instalarla en un pc donde otra persona pueda trastear y hacer de todo con ella, de modo que de pie a que surjan posibles errores. dicen que cuatro ojos ven mas que dos asi que a modo de poder depurar errores de la aplicacion creo que no es mala idea
se me ha ocurrido hacer un fichero Log.txt en el que poder recoger cualquier incidencia de la aplicacion pero no se el metodo correcto para hacer esto;
haciendo pruebas, he conseguido añadir el error en el fichero pero claro, solo desde el evento de un objeto; es decir, por ejemplo si pulso el boton de conectar a la bd y se generara un error, llamo a la funcion para añadir el error en el fichero y lo agrego;bien, pero esto quiero hacerlo desde todos los objetos que tenga en la aplicación?tengo que llamar desde cada uno de ellos a dicha función como se me ocurre a primera vista?claro, si esto es asi, cómo puedo llamar desde otro formulario a un procedimiento del FormPrincipal?
existe alguna posibilidad a nivel de la aplicacion de controlar si existiera alguna excepcion llamar a la función?
El fichero Log.txt, ya estaria creado y solo se tendria que añadir el error en el: fecha, hora, nombre del formulario,nombre del objeto,error
lo que he conseguido hasta ahora es esto:
Código:
procedure registrolog (FormName,NomObjeto,S:string) ;
var Fich : TextFile ;
begin
   if FileExists (ExtractFilePath(Application.ExeName)+'\Log\Log.txt')
      then
         begin
            AssignFile (Fich,ExtractFilePath(Application.ExeName)+'\Log\Log.txt') ;
            Append (Fich) ;
            Writeln (Fich,DateToStr(Date),'  ',TimeToStr(Time),'  ','  ',FormName,'  ',NomObjeto,'  ',S);
            Flush (Fich) ;
            CloseFile (Fich) ;
         end ;
end;
llamada al procedimiento
Código:
   TRY 
      tablepwd.Active := False ; //pongo false en lugar de true para generar queriendo la excepcion y ver el resultado de lo que seria agregar el error en el fichero
      if meditclave.Text = tablepwd.fieldbyname('clave').asstring then
      ...
   EXCEPT ON Error:Exception do
      begin
         tablepwd.close ;
         Messagedlg ('Error al abrir la Base de Datos'+#13+#13+'Error del Sistema: '+Error.Message,mtError,[mbOK],0);
         REGISTROLOG (Screen.ActiveForm.Name,(Sender as TSpeedButton).name,Error.Message) ;
      end;
   END;
linea añadida en el fichero:

Código:
16/09/2011  11:05:42    frmmenu  sbconectar  tablepwd: Field 'clave' not found
Ya si no es mucho pedir, cual seria la forma de poder tabular correctamente el fichero Log.txt? yo lo hago de forma muy rudimentaria añadiendo espacios vacios pero no creo que sea lo suyo

me gustaria poder añadir en el fichero otro dato;seria el evento del objeto pero eso no lo he logrado

bueno, mucha informacion; espero que este claro lo que pretendo para ver si podeis ayudarme
Responder Con Cita
  #2  
Antiguo 16-09-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Si he entendido bien, lo que necesitas es capturar el evento OnException del programa y desde allí tratar todos los errores.
Puedes crear un procedure en tu Form principal, algo así

Código Delphi [-]
private
  { Private declarations }
  procedure AlSaltarExcepcion(Sender: TObject; E: Exception);
public
  { Public declarations }

Lo asignas al crear el Form, ejemplo:

Código Delphi [-]
procedure TFmain.FormCreate(Sender: TObject);
begin
  Application.OnException := AlSaltarExcepcion;
end;

En tu procedure haces lo que creas conveniente, ejemplo:

Código Delphi [-]
procedure TFmain.AlSaltarExcepcion(Sender: TObject; E: Exception);
begin
  GuardarError( E.Message );
end;

Y en GuardarError lo almacena en tu fichero log.

Código Delphi [-]
procedure GuardarError( cMensajeError:string );
var
  F : TextFile;
  cF : string;
begin
  cF := ExtractFilePath(Paramstr(0))+FormatDateTime('yyyymmdd',now)+_FILELOGERROR_;
  AssignFile( F, cF );
  if FileExists( cF ) then               
    Append( F )
  else
    ReWrite( F );
  //
  Writeln( F, '-->  ' + FormatDateTime('dddd dd/mm/yyyy hh:nn:ss',Now) );
  WriteLn( F, cMensajeError );
  WriteLn( F, '' );
  Flush( F );
  CloseFile( F );
end;

En fin, es sólo un ejemplo simplón, para que te hagas una idea.
Espero que sea lo que buscas.
Responder Con Cita
  #3  
Antiguo 16-09-2011
jsc jsc is offline
Miembro
 
Registrado: nov 2003
Posts: 144
Poder: 21
jsc Va por buen camino
Fichero Log.txt

en gran parte eso es lo que busco
muchas gracias Casimiro Notevi
como podria añadir el evento del componente que genero la excepción?
probare y si necesito algo más, lo comento
muchas gracias nuevamente
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
leer fichero de texto emeritos Lazarus, FreePascal, Kylix, etc. 5 20-02-2008 19:57:46
Fichero de Texto Enorme muli Varios 8 19-02-2008 02:23:35
verificar fichero de texto arley_molina Varios 2 12-06-2006 20:52:40
fichero de texto con tabulaciones davidgaldo Varios 5 30-11-2005 16:23:38
Ayuda con fichero de texto jadelphi Varios 4 07-10-2004 09:43:14


La franja horaria es GMT +2. Ahora son las 02:40:38.


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