Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 24-06-2006
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 27
Delphius Va camino a la fama
vtdeleon:

La verdad es que de lo que leí, se comenta que se hace con componentes de la JEDI, y no hago uso de esas librerías, ya que hasta el momento no tuve necesidad de usarlas...

Yo cuento por el momento este código:
Código Delphi [-]
unit UErrorLog;
{******************************************************************************
 * UERRORLOG 1.0                                                              *
 ******************************************************************************
 Unidad: UErrorLog
 Versión: 1.0
 Fecha-Hora: 29/04/2006 - 03:33 pm
 Para: Delphi 6
 Autor: Delphius
 ******************************************************************************
 Descripción:
   La unidad UErrorLog permite llevar un registro de todas las excepciones y/o
 errores que se detectaron en una aplicación determinada. Dicho registro tiene
 una estructura como la siguiente:
 hh:mm:ss NombreExcepcion: DescripciónExcepcion

   Para hacer empleo de esta unidad, sólo hay que indicar en que parte del pro-
 grama se desea comenzar a detectar las excepciones mediante el procedimiento
 StartLog(), el cual recibe el directorio completo de donde se desea guardar el
 mismo.

   Esta unidad fue extraída de "La Cara Oculta de Delphi 4", escrita por Ian
 Marteens; ¡Espero que sepas perdonarme Ian! Por lo que se agradece el gesto
 de "querer compartir" tus ejemplos a muchos... por lo menos a mí éste me viene
 al pelo para llevar un control de mi "productividad"  y la calidad de los sis-
 temas que hago.
 ******************************************************************************
 Historial:
   - versión 1.0
 ******************************************************************************}

interface
  {* Procedimientos incorporados *}
  procedure StartLog(const AFileName: string);
  procedure StopLog;

implementation

uses
  SysUtils, Forms;

type
  {* Estructura del log *}
  TExceptionLog = class
    protected
      {** Declaraciones protegidas **}
      SavedHandler: TExceptionEvent;
      FileName: string;
      procedure ExceptionHandler(Sender: TObject; E: Exception);
    public
      {** Declaraciones públicas **}
      constructor Create(const AFileName: string);
      destructor Destroy; override;
  end; {* Fin TExceptionLog *}

var
  Log: TExceptionLog = Nil;

procedure StartLog(const AFileName: string);
{******************************************************************************
 Inicia el log que será guardado en un directorio específico.
 * Parámetro *
   AFileName: Directorio en donde guardar el log
 ******************************************************************************}
begin
  if NOT Assigned(Log)
     then Log := TExceptionLog.Create(AFileName);
end; {* Fin P. StartLog *}

procedure StopLog;
{******************************************************************************
 Detiene la ejecución del log.
 ******************************************************************************}
begin
  if Assigned(Log)
     then begin
            Log.Free;
            Log := Nil;
          end;
end; {* Fin P. StopLog *}

{* ---- TExceptionLog ---- *}
procedure TExceptionLog.ExceptionHandler(Sender: TObject; E: Exception);
{******************************************************************************
 Crea un registro en el log al capturar una excepción y/o error.
 * Parámetro *
 Sender: Objeto que levanta la excepción.
 E: Tipo de excepción levantada
 ******************************************************************************}
var Txt: TextFile;
begin
 Application.ShowException(E);
 try
   AssignFile(Txt,FileName);
   try
     Append(Txt);
   except
     Rewrite(Txt);
   end;
   try
     writeln(Txt, FormatDateTime('hh:nn:ss',Now)+' '+ E.ClassName +': '+E.Message +' - '+Sender.ClassName);
   finally
     CloseFile(Txt);
   end;
 except
 end;
end; {* Fin P. ExceptionLog.ExceptionHandler *}

constructor TExceptionLog.Create(const AFileName: string);
{******************************************************************************
 Crea un objeto de la clase TExceptionLog.
 * Parámetro *
 AFileName: Directorio en donde llevar a cabo el log.
 ******************************************************************************}
begin
  inherited Create;
  FileName := AFileName;
  SavedHandler := Application.OnException;
  Application.OnException := ExceptionHandler;
end; {* Fin C. TExceptionLog-Create *}

destructor TExceptionLog.Destroy;
{******************************************************************************
 Destruye un objeto de la clase TExceptionLog.
 ******************************************************************************}
begin
  Application.OnException := SavedHandler;
  inherited Destroy;
end; {* Fin D. TExceptionLog-Destroy *}

Initialization
  // Nada

Finalization
  // Al finalizar... detener el registro del log
  StopLog;

end.

Como podrás observar, es demasiado simple... estuve viendo que más le puedo sacar al Exception y del Sender... y por el momento no se me ocurre nada...

Realmente me gustaría poder capturar muchas de las cosas que ofrece el componente de la JEDI... pero lo que he leído del hilo que me mandaste, esa info (en parte) va junto al exe,... y no se... me gustaría evitarme eso.

Estaba pensando en descargar la JEDI Library... como para chequear un poco, pero me gustaría saber si hay alguna manera de sacar alguna (por lo menos) de la info que ofrece ese componente... mediante algún código más o menos sencillo sin tener que andar descargandolo. ¿Me explico? A ver, ¿Es posible obtener información parecida a lo que ofrece el componente, sin tener que hacer uso del mismo, por código? No quisiera decargar toda una librería si lo que quiero se puede hacer sin componente... no quiere decir que esté en contra de la librería (estoy seguro de que le sacaría provecho), ¿pero mientras me pueda valer de los componentes estándar (y/o propios)... para que más?

Desde ya muchas gracias.
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Es posible obtener la MAC de una direccion IP ilichhernandez Internet 3 30-12-2010 11:46:05
Obtener el Contenido de una unidad (cd o hd), es posible? Essato API de Windows 3 22-04-2005 17:10:43
Windows ha detectado un error y debe cerrarse hefesta Conexión con bases de datos 13 26-07-2004 23:51:46
Posición del primer caracter de linea en un RichEdit SCH Varios 0 22-09-2003 20:51:32
Obtener el Codigo de Error En DBexpres lgluna Conexión con bases de datos 0 23-05-2003 17:57:26


La franja horaria es GMT +2. Ahora son las 23:41:56.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi