Es hora de obtener y modificar archivos en Delphi
Este artículo presenta el método de usar funciones del sistema y llamadas a la función API de Windows para obtener y modificar la información de tiempo del archivo en Delphi.
Los amigos que están familiarizados con Windows 95/98 a menudo usan el método de clic derecho para ver la información de atributo del archivo seleccionado. El tiempo de creación de archivos, el tiempo de modificación y el tiempo de acceso se enumeran en el menú Propiedades. Esta información a menudo es muy útil, y su configuración generalmente se completa automáticamente por el sistema operativo (es decir, DOS/Windows, etc.) y los usuarios no modificarán fácilmente.
Aquí, le presentaré cómo obtener y modificar el tiempo de archivo en Delphi. Delphi proporciona una interfaz de llamada completa para las funciones de la API de Windows, que puede facilitar la programación avanzada de Windows. Usando la función FindFirst en Delphi, puede obtener un registro de atributos de archivo y el campo FindData en este registro registra información detallada de tiempo del archivo. Desafortunadamente, la información de tiempo en FindATA no se puede obtener directamente. Por lo tanto, alguien (nota del editor: lo siento, no sé el nombre de esta persona) escribió una función de conversión para completar la conversión del formato de tiempo de archivo. El método de implementación específico se proporciona a continuación solo para referencia:
function coVFileDate (fd: _filetime): tdateTime;
{Convertir formato de tiempo de archivo}
varilla
TCT: _SystemTime;
Temperatura: _filetime;
Comenzar
Filetimetolocalfiletime (fd, temp);
FileTimetosystemTime (temp, tct);
Covfiledate: = SystemTimetodateTime (tct);
fin;
Con el soporte de la función anterior, podemos obtener la información de tiempo de un archivo. Aquí hay un ejemplo simple:
ProcDeure getFiletime (const tf: string);
{Obtener tiempo de archivo, TF representa la ruta y el nombre del archivo de destino}
estúpido
Modelo = yyyy/mm/dd, hh: mm: ss;
varilla
TP: TSearchRec;
T1, t2, t3: cadena;
Comenzar
FindFirst (tf, faanyfile, tp);
Covfiledate (tp.finddata.ftcreationtime)));
{Devuelve el tiempo de creación de archivos}
T2: = formatDateTime (modelo,
Covfiledate (tp.finddata.ftlastwriteTime)));
{Devuelve el tiempo de modificación del archivo}
T3: = formatDateTime (modelo, ahora));
{Devuelve el tiempo de acceso actual del archivo}
FindClose (TP);
fin;
El tiempo para establecer un archivo es más complicado. El siguiente ejemplo utiliza cuatro componentes DatateMepicker para completar la configuración del tiempo de creación de archivos y el tiempo de modificación. Nota: El tiempo de acceso del archivo se reemplaza por el tiempo de modificación. Cuando use el ejemplo a continuación, agregue cuatro componentes DatateMepicker a su formulario. Donde el tipo en el primer y el tercer DataTimePicker los componentes se establecen en dtkdate, y el tipo en el segundo y cuarto componentes DataTimePicker se establece en DTKTime.
procedimiento setFileDateTime (const tf: string);
{Establecer el tiempo de archivo, TF representa la ruta y el nombre del archivo de destino}
varilla
Dt1, dt2: entero;
FS: tfilestream;
FCT, FLT: Tfiletime;
Comenzar
Dt1: = dataTiMetOfiledate (
Trunc (form1.dateTiMepicker1.date) + frac (form1.dateTiMepicker2.time));
Dt2: = dataTiMetOfiledate (
Trunc (form1.dateTiMepicker3.date) + frac (form1.dateTiMepicker4.time));
{Convierta la información ingresada por el usuario en DatateMepicker}
intentar
Fs: = tfilErsream.create (tf, fMopenreadWrite);
intentar
Si dosdateTimetOfiletime (LongRec (DT1) .hi, LongRec (DT1) .lo, FCT) y
LocalfiletimetOfiletime (FCT, FCT) y
DosdateTimetOfiletime (LongRec (DT2) .hi, LongRec (DT2) .lo, FLT) y
LocalfiletimetOfiletime (FLT, FLT)
Luego setFiletime (fs.handle,
@Fct, @flt, @flt);
{Establecer atributo de tiempo de archivo}
Finalmente
Fs. libre;
fin;
excepto
Messagedlg (¡Falló la operación de modificación de la fecha!
mterror, [mbok], 0);
{Falló porque el archivo de destino se está utilizando, etc.}
fin;
fin;
El anterior presenta brevemente el método de modificar los atributos de tiempo de archivo. Además, no use esta tecnología para formas injustas, como destruir los documentos de otras personas.