Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-12-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Poder: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Cita:
¿Existe la posibilidad de crear un objeto log, que sea global a todas las clases?
Si existe...
Creas la clase TLog y luego la instacias y la utilizas desde cualquier otro lugar...
El problema: Reutilización!
Si en otro proyecto quieres utilizar alguno de los objetos que habías creado tendrás que crear una clase TLog con el mismo nombre y que quizás no quieras.
También tendrá que estar en el mismo Formulario o DataModule.

He visto que en mi post anterior se repite código. Supongo que esto sería mejor y que puedes agregar a cada una de las clases que tengas:
Código Delphi [-]
clase TMatematica1
  ...
  private
     MiLog : Log
     procedure NuevaLineaLog(s: string)
  ...
  public
    procedure HacerAglo;
    procedure AsignaLog(Log : TLog)
end

procedure TMatematica1.AsignaLog(Log : TLog)
begin
  MiLog := Log;
end

procedure NuevaLineaLog(s: string)
begin
  if Assigned(MiLog) then MiLog.NuevaLinea('Matematica1 esta HaciendoAlgo');
end

procedure TMatematica1.HacerAglo;
var
  Resultado : Integer;
begin
  NuevaLineaLog('Matematica1 esta HaciendoAlgo');
  ...
  NuevaLineaLog('Resultado de Matematica1: ' + IntToStr(Resultado));
end

Última edición por duilioisola fecha: 04-12-2011 a las 18:11:10.
Responder Con Cita
  #2  
Antiguo 04-12-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Poder: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
De manera global sería más o menos así:
Código Delphi [-]
clase TLog
  Fichero: string
  Lineas: TStrings
  procedure Inicializar(UnFichero: string);  // Asigna el nombre del fichero donde guardar el log y crea Lineas
  procedure NuevaLinea(s: string) // Crea una nueva linea en el log (fecha - hora - s)
  procedure Dump; // Guarda las lineas en el fichero y borra Lineas
end

clase TMatematica1
  ...
  MiLog : Log
  ...
  procedure HacerAglo;
end

procedure TMatematica1.HacerAglo;
var
  Resultado : Integer;
begin
  LogGlobal.NuevaLinea('Matematica1 esta HaciendoAlgo');
  ...
  LogGlobal.NuevaLinea('Resultado de Matematica1: ' + IntToStr(Resultado));
end

var
   LogGlobal : TLog;
begin
  LogGlobal.Inicializar('c:\Log.txt');
  ...
  LogGlobal.Dump;
end.
Responder Con Cita
  #3  
Antiguo 05-12-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.437
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Personalmente creo (y así lo hago yo) que es mejor un elemento Global a toda la aplicación. Puede ser una clase o un componente.

Yo mismo tengo publicado uno que utilizo en algunas de mis aplicaciones; El componente TlogDisk, que forma parte de GLib.



El código lo puedes descargar y puedes echarle un vistazo. Cualquier sugerencia para completarlo también será bienvenida.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 05-12-2011
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Yo creo para algo está la parte "initialization" y "finalization" de la unidad. Así, creas y destruyes el log en los lugares adecuados.

Si una unidad hace un uses de la unidad UnitLog, primero se inicializa la unidad UnitLog (creandose la variable Log y estando disponible antes de que se cree la primera ventana que hace uso de él). Al destruirse, se destruye cuando ya nadie hace uso de dicha unidad, por tanto es de nuevo, el lugar adecuado.

En lo personal, tengo Mi log creado en una única .pas como una clase y siempre abro el archivo, guardo el string y cierro el archivo de log. Es algo egoista en el uso del disco duro, pero siempre tendré todos los mensajes de depuración aún cuando haya excepciones anidadas y cosas raras... nunca se queda el archivo de log abierto, con mensajes pendientes ni nada de eso...

Código Delphi [-]

type TlpLog = class(TObject)
...

end;

var log:TlpLog;

implementation

....

initialization 
log := TlpLog.Create;

finalization 
log.free;

Con solo hacer un "uses" de esta unidad, ya puedes usar el log.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 07-12-2011
zampa zampa is offline
Registrado
NULL
 
Registrado: dic 2011
Posts: 8
Poder: 0
zampa Va por buen camino
Talking

Muchas gracias por todas las respuestas.

Al final me he decantado por declarar el objeto global, y hacer únicamente uso del uses. Desde cualquier sitio dónde los necesito lo llamo. Como parámetro incluyo self, para poder decir de quien ha venido la llamada, y que padres y abuelos tiene.

Bueno, muchas gracias por la ayuda. Me ha servido de mucho
Responder Con Cita
Respuesta


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
Fichero Ini nelem Varios 2 03-01-2008 16:05:40
Ruta de un fichero Ubed Conexión con bases de datos 1 09-11-2007 09:43:01
Fichero Ini keys Varios 8 23-11-2006 17:44:38
Obtener un fichero adjunto a un nodo de un fichero XML muntasil Internet 0 18-07-2006 12:57:57
nombre fichero valentine OOP 1 24-09-2004 18:43:15


La franja horaria es GMT +2. Ahora son las 20:48:26.


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