Saatnya mendapatkan dan memodifikasi file di Delphi
Artikel ini memperkenalkan metode penggunaan fungsi sistem dan panggilan fungsi API Windows untuk mendapatkan dan memodifikasi informasi waktu file di Delphi.
Teman yang terbiasa dengan Windows 95/98 akan sering menggunakan metode klik kanan untuk melihat informasi atribut dari file yang dipilih. Waktu pembuatan file, waktu modifikasi, dan waktu akses tercantum dalam menu Properties. Informasi ini seringkali sangat berguna, dan pengaturannya biasanya secara otomatis diselesaikan oleh sistem operasi (yaitu, DOS/Windows, dll.) Dan tidak akan mudah dimodifikasi oleh pengguna.
Di sini, saya akan memperkenalkan kepada Anda cara mendapatkan dan memodifikasi waktu file di Delphi. Delphi menyediakan antarmuka panggilan lengkap untuk fungsi Windows API, yang dapat memfasilitasi pemrograman Windows tingkat lanjut. Menggunakan fungsi FindFirst di Delphi, Anda bisa mendapatkan catatan atribut file, dan bidang FindData di catatan ini mencatat informasi waktu file terperinci. Sayangnya, informasi waktu di FindData tidak dapat diperoleh secara langsung. Oleh karena itu, seseorang (catatan editor: Maaf saya tidak tahu nama orang ini) menulis fungsi konversi untuk menyelesaikan konversi format waktu file. Metode implementasi spesifik diberikan di bawah ini hanya untuk referensi:
fungsi covfiledate (fd: _filetime): tDateTime;
{Konversi format waktu file}
var
Tct: _systemTime;
Temp: _filetime;
Mulai
Filetimetolocalfiletime (fd, temp);
FiletimetosystemTime (temp, tct);
Covfiledate: = SystemTimetodateTime (TCT);
akhir;
Dengan dukungan fungsi di atas, kami dapat memperoleh informasi waktu file. Berikut adalah contoh sederhana:
Procdeure getFileTime (const tf: string);
{Dapatkan waktu file, TF mewakili jalur dan nama file target}
const
Model = yyyy/mm/dd, hh: mm: ss;
var
Tp: tsearchrec; {mendeklarasikan tp sebagai catatan pencarian}
T1, T2, T3: String;
Mulai
FindFirst (tf, faanyfile, tp);
Covfiledate (tp.finddata.ftcreationtime)));
{Kembalikan waktu pembuatan file}
T2: = formatDateTime (model,
Covfiledate (tp.finddata.ftlastwritetime)));
{Kembalikan waktu modifikasi file}
T3: = formatDateTime (model, sekarang));
{Kembalikan waktu akses saat ini dari file}
Findclose (tp);
akhir;
Waktu untuk mengatur file lebih rumit. Contoh berikut menggunakan empat komponen DataMePicker untuk menyelesaikan pengaturan waktu pembuatan file dan waktu modifikasi. Catatan: Waktu akses file digantikan oleh waktu modifikasi. Saat menggunakan contoh di bawah ini, tambahkan empat komponen DataMePicker ke formulir Anda. Di mana jenis di komponen DataMePicker pertama dan ketiga diatur ke DTKDate, dan jenis di komponen DataMePicker kedua dan keempat diatur ke DTKTIME.
Prosedur setFileTeTime (const tf: string);
{Set waktu file, TF mewakili jalur dan nama file target}
var
Dt1, dt2: integer;
FS: tfilestream;
Fct, flt: tfiletime;
Mulai
Dt1: = datetimetofilate (
Trunc (form1.dateTimePicker1.date) + frac (form1.datetimePicker2.time));
Dt2: = datetimetofilate (
Trunc (form1.dateTimePicker3.date) + frac (form1.datetimePicker4.time));
{Konversi informasi yang dimasukkan oleh pengguna di DataTimePicker}
mencoba
Fs: = tfilestream.create (tf, fmopenreadwrite);
mencoba
Jika dosdateTimetOfiletime (longrec (dt1) .hi, longrec (dt1) .lo, fct) dan
Localfiletimetofiletime (fct, fct) dan
Dosdatetimetofiletime (longrec (dt2) .hi, longrec (dt2) .lo, flt) dan
Localfiletimetofiletime (flt, flt)
lalu setFileTime (fs.handle,
@Fct, @flt, @flt);
{Set Atribut Waktu File}
Akhirnya
Fs.free;
akhir;
kecuali
MessagedLG (Operasi Modifikasi Tanggal Gagal!,
Mterror, [mbok], 0);
{Gagal karena file target sedang digunakan, dll.}
akhir;
akhir;
Di atas secara singkat memperkenalkan metode modifikasi atribut waktu file. Juga, tolong jangan gunakan teknologi ini dengan cara yang tidak adil seperti menghancurkan dokumen orang lain.