人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

在Delphi中取得與更改文件的時間

在Delphi中取得與更改文件的時間

更新時間:2022-09-07 文章作者:未知 信息來源:網絡 閱讀次數:

本文介紹了在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年或更高。另外,請不要將此技術用于破壞他人文件等非正當途徑。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 台州市| 抚顺市| 儋州市| 南投市| 宁陵县| 成都市| 长寿区| 县级市| 原阳县| 津市市| 望城县| 河间市| 马尔康县| 榕江县| 固镇县| 迁安市| 望城县| 临夏县| 渑池县| 伊宁市| 莱西市| 合山市| 阿拉尔市| 穆棱市| 林芝县| 舟曲县| 临潭县| 东兴市| 延安市| 米林县| 宁明县| 长丰县| 漠河县| 镇坪县| 宁阳县| 宜丰县| 新干县| 依安县| 吉隆县| 武汉市| 北票市|