麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Delphi > 正文

在Delphi中獲取和修改文件的時間

2019-11-18 18:16:19
字體:
來源:轉載
供稿:網友
在Delphi中獲取和修改文件的時間

  本文介紹了在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);
{ 獲取文件時間,Tf表示目標文件路徑和名稱 }
const
Model=yyyy/mm/dd,hh:mm:ss; { 設定時間格式 }
var
Tp:TSearchRec; { 申明Tp為一個查找記錄 }
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);
{ 設置文件時間,Tf表示目標文件路徑和名稱 }
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));
{ 轉換用戶輸入在DataTimePicker中的信息 }
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;
以上簡單介紹了文件時間屬性的修改方法,請注意:修改文件時間的范圍是從公元1792年9月19日開始的,上限可以達到公元2999年或更高。另外,請不要將此技術用于破壞他人文件等非正當途徑。


上一篇:delphi中command/action的疑惑

下一篇:用Delphi實現整個網站圖片的極速下載

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 亚洲一二区精品 | 成人午夜一区 | 成人免费精品视频 | 国产精品成人免费一区久久羞羞 | 久久91亚洲人成电影网站 | 九九热视频免费 | www.成人精品 | 国产精品久久久久久久久久久久久久久久 | 久久久日韩精品一区二区三区 | 国产妇女乱码一区二区三区 | 九九热精品视频在线播放 | 中文字幕一区二区三区久久 | 成人在线视频免费 | 久久国产精品影视 | 少妇一级淫片免费放播放 | 国产自在自线午夜精品视频在 | 国产手机在线视频 | 毛片av网| 国产精品啪 | 精品国产一区二区亚洲人成毛片 | 中文字幕一区久久 | 一级在线观看视频 | 亚洲国产色婷婷 | 日本娇小videos高潮 | 国产免费视频在线 | 国产毛片网站 | 精国品产一区二区三区有限公司 | 免费人成在线播放 | 国产一区二区精品在线观看 | 成人不卡一区二区 | 欧美级毛片 | av在线日韩 | 娇妻被各种姿势c到高潮小说 | 一级做受毛片免费大片 | 中国成人在线视频 | 国产永久免费观看 | 亚州欧美视频 | 日韩中文字幕一区二区三区 | 午夜视频导航 | 久久国产免费 | 久久精品视频在线看99 |