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 05-09-2006
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Saber si un archivo ha sido modificado desde fuera

Veréis...

tengo un programa, que utiliza archivos de texto...
Bueno, tengo un archivo visualizado en un TMemo, y alguien, mientras está mi aplicación ejecutándose, alguien modifica ese archivo con el Bloc de Notas.

¿Cómo puedo saber, cuando mi aplicación toma el foco, que ese archivo ha sido modificado y cargarlo con los cambios en el TMemo?

Uso Delphi 3 Standard.

Gracias
Responder Con Cita
  #2  
Antiguo 05-09-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Un posible forma que se me ocurre a bote pronto sería utilizar la fecha del archivo como referencia. Cuando carges el archivo te quedas con su fecha, además de con su contenido. En el momento en que este contenido se modifique, es decir, cuando el usuario modifique el contenido del "TMemo" que muestra el contenido del archivo, en el evento de turno, podría volverse a mirar la fecha del archivo, y, si no coincide con la que guardaste... es que ha sido modificado desde fuera de tu aplicación.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 05-09-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Además de comprobar la fecha de la ultima modificación se me ocurre también que puedes usar el atributo FILE_ATTRIBUTE_ARCHIVE , es decir, cuando abres el archivo le quitas ese atributo, si otra aplicación hace algún cambio este atributo vuelve a estar presente. Algunas aplicaciones de backup lo usan para saber que archivos tienen que actualizar y cuales no.

Y la otra solución que se me ocurre, aunque pueda parecer una tontería, es comparar lo que tienes con lo que hay guardado. Aunque si son textos muy largos puede que no sea lo mas conveniente.
Responder Con Cita
  #4  
Antiguo 05-09-2006
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Muchas gracias por la sugerencia.

La verdad es que tenía otra cosas mejor: usar una función de la API, SHChangeNotify (o algo así, no lo recuerdo bien). Lo que pasa es que en mi versión de Delphi (3 standard) no está declarada en ninguna parte, y el ejemplo que vi era para Delphi 7.
Responder Con Cita
  #5  
Antiguo 05-09-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
La verdad es que tenía otra cosas mejor: usar una función de la API, SHChangeNotify (o algo así, no lo recuerdo bien). Lo que pasa es que en mi versión de Delphi (3 standard) no está declarada en ninguna parte, y el ejemplo que vi era para Delphi 7.
¿Tienes ese ejemplo todavía? ¿Podrías adjuntarlo en un mensaje en este mismo Hilo?
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 05-09-2006
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
quizás mañana, a esta misma hora (es que tengo que pedírselo a la persona que me lo pasó, pues yo no lo tengo ahora mismo)
Responder Con Cita
  #7  
Antiguo 11-09-2006
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Perdón por el retrasillo....

pero es que no he podido ir antes. Al final no tuve que pedirlo, lo tenía por ahí tirado en una carpeta "De Paso".

El ejemplo usa una función para comprobar todo lo que pasa con archivos y directorios (borrar, renombrar, crear, copiar...)

Aún no le he echado un vistazo
Archivos Adjuntos
Tipo de Archivo: zip shellmonitor.zip (9,9 KB, 50 visitas)
Responder Con Cita
  #8  
Antiguo 11-09-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

No he podido probar el ejemplo que adjuntas, puesto que no dispongo del componente necesario, pero, en todo caso, a mí me parece que comprobar la fecha del archivo al momento de que se realize algún cambio en el editor de turno ("TMemo", por ejemplo), o bien en otro momento, o comprobar el "hash" del archivo, por ejemplo, sería algo más "eficiente" que estar constantemente pendiente de posibles cambios en un archivo.

No sé. Lo mismo estoy equivocado y resulta que es mejor hacerlo de otro modo, pero, en los programas que suelo utilizar, editores de código fuente, generalmente, suele preguntarse si se quiere actualizar o no el archivo en edición (porque este haya cambiado), por ejemplo, cuando el programa en cuestión "toma el foco" (después de perderlo). No me parecece que estén pendientes de los cambios de uno o más archivos en todo momento.

Pero, bueno, no me hagas mucho caso tampoco... es sólo mi opinión al respecto, y, la verdad sea dicha, digo por dónde empezaría, pero, lo cierto es que no me ví en una necesidad similar, aunque me la pueda imaginar...
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 11-09-2006 a las 19:22:54.
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
Último fichero modificado ? spab API de Windows 3 30-11-2005 03:36:33
Como saber si un Formulario ha sido creado Durbed OOP 7 13-10-2005 13:06:28
Rapido con Delphi, y Lento desde fuera de delphi JoseQ Varios 0 08-09-2005 10:54:48
Modificar un dfm desde fuera del entorno wendigo Varios 5 07-05-2004 16:55:32
Registro modificado ander Firebird e Interbase 2 28-05-2003 08:16:19


La franja horaria es GMT +2. Ahora son las 21:53:40.


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