Zeit, Dateien in Delphi zu erhalten und zu ändern
In diesem Artikel wird die Methode zur Verwendung von Systemfunktionen und Windows -API -Funktionen eingeführt, um die Dateizeitinformationen in Delphi zu erhalten und zu ändern.
Freunde, die mit Windows 95/98 vertraut sind, verwenden häufig die rechte Klickmethode, um die Attributinformationen der ausgewählten Datei anzuzeigen. Die Dateierstellung Zeit, Änderungszeit und die Zugriffszeit sind im Menü Eigenschaften aufgeführt. Diese Informationen sind oft sehr nützlich, und ihre Einstellungen werden normalerweise automatisch vom Betriebssystem (dh DOS/Windows usw.) ausgeführt und werden von Benutzern nicht leicht geändert.
Hier werde ich Ihnen vorstellen, wie Sie die Dateizeit in Delphi erhalten und ändern. Delphi bietet eine vollständige Anrufoberfläche für Windows -API -Funktionen, die die erweiterte Windows -Programmierung erleichtern kann. Mit der FindFirst -Funktion in Delphi können Sie einen Dateiattributdatensatz und das Feld FindData in diesem Datensatz detaillierten Dateizeitinformationen abrufen. Leider können die Zeitinformationen in FindData nicht direkt erhalten werden. Daher hat jemand (Anmerkung des Herausgebers: Es tut mir leid, dass ich den Namen dieser Person nicht kenne) eine Konvertierungsfunktion, um die Konvertierung des Dateizeitformats abzuschließen. Die spezifische Implementierungsmethode wird unten nur als Referenz angegeben:
Funktion covFileDate (fd: _filetime): tdatetime;
{Dateizeitformat konvertieren}
var
TCT: _SystemTime;
Temp: _filetime;
Beginnen
FiletimetolocalFileTime (fd, temp);
Filetimetosystemtime (Temp, TCT);
CovFileDate: = Systemtimetodatetime (TCT);
Ende;
Mit der obigen Funktionsunterstützung können wir die Zeitinformationen einer Datei erhalten. Hier ist ein einfaches Beispiel:
Procdeure GetFileTime (const tf: String);
{Dateizeit abrufen, tf repräsentiert den Zieldateipfad und den Namen}}
Const
Model = yjyy/mm/dd, hh: mm: ss;
var
TP: Tsearchrec;
T1, T2, T3: String;
Beginnen
Findfirst (tf, faanyfile, tp);
CovFiledate (tp.findData.ftcreationTime)));
{Rückgabe der Dateierstellungszeit}
T2: = formatDatetime (Modell,
CovFiledate (tp.finddata.ftlastwritetime)));
{Rückgabe der Dateimodifikationszeit}}
T3: = formatDatetime (Modell, jetzt));
{Gibt die aktuelle Zugriffszeit der Datei zurück} zurück
FindClose (tp);
Ende;
Die Zeit zum Festlegen einer Datei ist komplizierter. Das folgende Beispiel verwendet vier DataTimePicker -Komponenten, um die Einstellung der Dateierstellung und Änderungszeit zu vervollständigen. Hinweis: Die Zugriffszeit der Datei wird durch die Änderungszeit ersetzt. Wenn Sie das folgende Beispiel verwenden, fügen Sie Ihrem Formular vier DataTimePicker -Komponenten hinzu. Wo die Art in der ersten und dritten DataTimePicker -Komponenten auf dtkdate eingestellt und im zweiten und vierten DataTimePicker -Komponenten auf DTKTime gesetzt werden.
Prozedur setFiledAtetime (const tf: String);
{Dateizeit festlegen, tf repräsentiert den Zieldateipfad und den Namen}}
var
DT1, DT2: Ganzzahl;
FS: TFilESTREAM;
FCT, FLT: TFileTime;
Beginnen
Dt1: = datetimetofiledate (
TRUNC (Form1.DATETIMEPICKER1.DATE) + FRAC (Form1.DateTimePicker2.Time));
Dt2: = datetimetofiledate (
TRUNC (Form1.DATETIMEPICKER3.DATE) + FRAC (Form1.DateTimePicker4.Time));
{Konvertieren Sie die vom Benutzer in DataTimePicker} eingegebenen Informationen}
versuchen
Fs: = tFilEstream.create (tf, fMopenReadwrite);
versuchen
Wenn dosdatetimetofiletim (longrec (dt1) .hi, longrec (dt1) .lo, fct) und
Localfiletimetofiletime (FCT, FCT) und
Dosdatetimetofiletim (longrec (dt2) .hi, longrec (dt2) .lo, flt) und
Localfiletimetofiletime (FLT, FLT)
dann setFileTime (fs.handle,
@Fct, @flt, @flt);
{Dateizeitattribut} festlegen}
Endlich
Fs.Free;
Ende;
außer
Messagedlg (Datumsänderungsvorgang fehlgeschlagen!,
Mterror, [Mbok], 0);
{Fehlgeschlagen, weil die Zieldatei verwendet wird usw.}
Ende;
Ende;
In der obigen Datei wird die Methode zur Änderung der Dateizeitattribute vorgestellt. Verwenden Sie diese Technologie auch nicht für ungerechte Möglichkeiten, wie z. B. die Zerstörung der Dokumente anderer Menschen.