Il est temps d'obtenir et de modifier des fichiers à Delphi
Cet article présente la méthode d'utilisation des fonctions système et des appels de fonction API Windows pour obtenir et modifier les informations de temps de fichier dans Delphi.
Les amis qui connaissent Windows 95/98 utiliseront souvent la méthode de clic droit pour afficher les informations d'attribut du fichier sélectionné. Le temps de création de fichiers, le temps de modification et le temps d'accès sont répertoriés dans le menu Propriétés. Ces informations sont souvent très utiles et leurs paramètres sont généralement achevés automatiquement par le système d'exploitation (c'est-à-dire DOS / Windows, etc.) et ne seront pas facilement modifiés par les utilisateurs.
Ici, je vous présenterai comment obtenir et modifier le temps de fichier à Delphi. Delphi fournit une interface d'appel complète pour les fonctions de l'API Windows, qui peuvent faciliter la programmation avancée de Windows. En utilisant la fonction FindFirst à Delphi, vous pouvez obtenir un enregistrement d'attribut de fichier et le champ FindData dans cet enregistrement enregistre des informations sur le temps de fichier. Malheureusement, les informations de temps dans FindData ne peuvent pas être obtenues directement. Par conséquent, quelqu'un (Note de l'éditeur: je suis désolé de ne pas connaître le nom de cette personne) a écrit une fonction de conversion pour remplir la conversion du format de temps de fichier. La méthode de mise en œuvre spécifique est donnée ci-dessous pour référence uniquement:
fonction covfiledate (fd: _filetime): tdateTime;
{Convertir le format de temps du fichier}
var
TCT: _Systemtime;
Temp: _filetime;
Commencer
Filemetolocalfiletime (FD, temp);
FileTimetosystemtime (Temp, TCT);
Covfiledate: = SystemTimetodateTime (TCT);
fin;
Avec la prise en charge de la fonction ci-dessus, nous pouvons obtenir les informations de temps d'un fichier. Voici un exemple simple:
ProcDeure getFileTime (const tf: string);
{obtenir le temps du fichier, TF représente le chemin et le nom du fichier cible}
const
Modèle = yyyy / mm / dd, hh: mm: ss;
var
Tp: tsearchrec;
T1, T2, T3: String;
Commencer
FindFirst (tf, faanyfile, tp);
Covfiledate (tp.finddata.ftcreationtime)));
{Renvoie le temps de création de fichiers}
T2: = formatdatetime (modèle,
Covfiledate (tp.finddata.ftlastwriteTime)));
{Renvoie le temps de modification du fichier}
T3: = formatDateTime (modèle, maintenant));
{Renvoie l'heure d'accès actuelle du fichier}
FindClose (tp);
fin;
Le temps de définir un fichier est plus compliqué. L'exemple suivant utilise quatre composants DatatimePicker pour terminer le réglage du temps de création de fichiers et du temps de modification. Remarque: l'heure d'accès du fichier est remplacée par le temps de modification. Lorsque vous utilisez l'exemple ci-dessous, ajoutez quatre composants DatatimePicker à votre formulaire. Où le type dans les première et troisième composants Datatimepicker est défini sur DTKDate, et le type dans les deuxième et quatrième composants DatatimePicker sont définis sur DTKtime.
Procédure setFileDateTime (const tf: string);
{Set File Time, TF représente le chemin et le nom du fichier cible}
var
DT1, DT2: entier;
FS: TFilestream;
FCT, flt: tfiletime;
Commencer
Dt1: = datetimetofiledate (
Trunc (form1.datetimepicker1.date) + frac (form1.datetimepicker2.time));
Dt2: = datetimetofiledate (
Trunc (form1.dateTimePicker3.Date) + frac (form1.datetimepicker4.time));
{Convertir les informations saisies par l'utilisateur dans datatimepicker}
essayer
Fs: = tFileStream.create (tf, fmOpenReadwrite);
essayer
Si dosdatetimetofiletime (longrec (dt1) .hi, longrec (dt1) .lo, fct) et
LocalFiletemetofiletime (FCT, FCT) et
Dosdatetimetofiletime (longrec (dt2) .Hi, longrec (dt2) .lo, flt) et
Localfiletimetofiletime (flt, flt)
puis setfiletime (fs.handle,
@Fct, @flt, @flt);
{SET FILE TIME Attribut}
Enfin
Fs.free;
fin;
sauf
Messagedlg (opération de modification de la date a échoué!,
Mterror, [Mbok], 0);
{Échec car le fichier cible est utilisé, etc.}
fin;
fin;
Ce qui précède introduit brièvement la méthode de modification des attributs de temps de fichier. En outre, veuillez ne pas utiliser cette technologie pour des moyens injustes tels que la destruction des documents des autres.