在Delphi中獲取和修改檔案的時間

2021-06-15 22:30:46 字數 2720 閱讀 1534

首先註明,這篇文章是我在csdn查詢相關資料的時候,在乙個帖子裡面看到的,因此無法獲知原出處了,希望原作者不要怪罪。。。

本文介紹了在delphi中利用系統函式和windows   api函式呼叫來獲取和修改檔案的時間資訊的方法。  

熟悉windows   95/98的朋友一定經常會用單擊滑鼠右鍵的方法來檢視所選定的檔案的屬性資訊。在屬性選單中會列出該檔案的建立時間、修改時間和訪問時間。這些資訊常常 是很有用的,它們的設定一般都是由作業系統(也就是由dos/windows等等)自動完成的,不會讓使用者輕易修改。  

這裡,我向大家介紹在delphi中如何實現檔案時間的獲取和修改方法。delphi中提供了很完備的windows   api函式的呼叫介面,可以方便的進行高階windows程式設計。利用delphi中的findfirst函式可以得到乙個檔案的屬性記錄,該記錄中的 finddata域中就記載了詳細的檔案時間資訊。然而遺憾的是,finddata中的時間資訊是不能直接得到的。因此,本人編寫了乙個轉換函式來完成文 件時間格式的轉換。下面給出了具體的實現方法,僅供參考:  

function   covfiledate(fd:_filetime):tdatetime;  

var  

tct:_systemtime;  

temp:_filetime;  

begin  

filetimetolocalfiletime(fd,temp);  

filetimetosystemtime(temp,tct);  

covfiledate:=systemtimetodatetime(tct);  

end;  

有了上面的函式支援,我們就可以獲取乙個檔案的時間資訊了。以下是乙個簡單的例子:  

procdeure   getfiletime(const   tf:string);  

const  

model='yyyy/mm/dd,hh:mm:ss';    

var  

tp:tsearchrec;    

t1,t2,t3:string;  

begin  

findfirst(tf,faanyfile,tp);     t1:=formatdatetime(model,  

covfiledate(tp.finddata.ftcreationtime)));  

t2:=formatdatetime(model,  

covfiledate(tp.finddata.ftlastwritetime)));  

t3:=formatdatetime(model,now));  

findclose(tp);  

end;  

設定檔案的時間要複雜一些,這裡介紹利用delphi中的datatimepicker元件來輔助完成這一複雜的操作。下面的例子利用了四個 datatimepicker元件來完成檔案建立時間和修改時間的設定。注意:檔案的訪問時間用修改時間來代替。使用下面的例子時,請在您的form上添 加四個datatimepicker元件。其中第一和第三個datatimepicker元件中的kind設定為dtkdate,第二個和第四個 datatimepicker元件中的kind設定為dtktime.  

procedure   setfiledatetime(const   tf:string);  

var  

dt1,dt2:integer;  

fs:tfilestream;  

fct,flt:tfiletime;  

begin  

dt1:=datetimetofiledate(  

trunc(form1.datetimepicker1.date)   +   frac(form1.datetimepicker2.time));  

dt2:=datetimetofiledate(  

trunc(form1.datetimepicker3.date)   +   frac(form1.datetimepicker4.time));  

try  

fs   :=   tfilestream.create(tf,   fmopenreadwrite);  

try  

if   dosdatetimetofiletime(longrec(dt1).hi,   longrec(dt1).lo,   fct)   and  

localfiletimetofiletime(fct,   fct)   and  

dosdatetimetofiletime(longrec(dt2).hi,   longrec(dt2).lo,   flt)   and  

localfiletimetofiletime(flt,   flt)  

then   setfiletime(fs.handle,    

@fct,   @flt,   @flt);  

finally  

fs.free;  

end;  

except  

messagedlg('日期修改操作失敗!',    

mterror,   [mbok],   0);  

end;  

end;  

以上簡單介紹了檔案時間屬性的修改方法,請注意:修改檔案時間的範圍是從公元2023年9月19日開始的,上限可以達到公元2023年或更高。另外,請不要將此技術用於破壞他人檔案等非正當途徑。

在Delphi中獲取和修改檔案的時間

首先註明,這篇文章是我在csdn查詢相關資料的時候,在乙個帖子裡面看到的,因此無法獲知原出處了,希望原作者不要怪罪。本文介紹了在delphi中利用系統函式和windows api函式呼叫來獲取和修改檔案的時間資訊的方法。熟悉windows 95 98的朋友一定經常會用單擊滑鼠右鍵的方法來檢視所選定的...

Delphi 中獲取檔案大小

大概有這些方法可以獲得檔案大小 filesizebyname 需要引用idglobal單元 getfilesize filesize 不能獲得正在使用的檔案大小 fileseek tfilestream.size 下面是使用例子 1.filesizebyname 需要引用idglobal單元 beg...

Delphi中獲取檔案大小

大概有這些方法可以獲得檔案大小 filesizebyname 需要引用idglobal單元 getfilesize filesize 不能獲得正在使用的檔案大小 fileseek tfilestream.size 下面是使用例子 1。filesizebyname 需要引用idglobal單元 beg...