?? unitfrmmain.pas
字號:
unit unitFrmMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls;
type
TForm1 = class(TForm)
DateTimePicker1: TDateTimePicker;
DateTimePicker2: TDateTimePicker;
DateTimePicker3: TDateTimePicker;
DateTimePicker4: TDateTimePicker;
OpenDialog1: TOpenDialog;
Button1: TButton;
Button2: TButton;
Memo1: TMemo;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
// 轉換文件的時間格式
function CovFileDate(FileDate: _FileTime): TDateTime;
var
Tct: _SystemTime;
Temp: _FileTime;
begin
FileTimeToLocalFileTime(FileDate, Temp);
FileTimeToSystemTime(Temp, Tct);
CovFileDate := SystemTimeToDateTime(Tct);
end;
// 獲取文件時間,fn表示目標文件路徑和名稱,fType為取得日期的類型
function GetFileTime(const fn: string; const fType: Byte): string;
const
Model = 'yyyy/mm/dd,hh:mm:ss'; { 設定時間格式 }
var
Tp: TSearchRec; { 聲明Tp為一個查找記錄 }
begin
FindFirst(fn, faAnyFile, Tp); { 查找目標文件 }
// 返回文件的創建時間
if fType = 1 then
Result := FormatDateTime(Model, CovFileDate(Tp.FindData.ftCreationTime));
// 返回文件的修改時間
if fType = 2 then
Result := FormatDateTime(Model, CovFileDate(Tp.FindData.ftLastWriteTime));
//返回文件的當前訪問時間
if fType = 3 then
Result := FormatDateTime(Model, Now);
FindClose(Tp);
end;
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
begin
FS.Free;
ShowMessage('修改成功');
end;
end;
except
// 因為目標文件正在被使用等原因而導致失敗
MessageDlg('日期修改操作失??!',
mtError, [mbOk], 0);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
Memo1.Clear;
Memo1.Lines.Add('文件創建日期:' + GetFileTime(OpenDialog1.FileName, 1));
Memo1.Lines.Add('文件修改日期:' + GetFileTime(OpenDialog1.FileName, 2));
Memo1.Lines.Add('文件訪問日期:' + GetFileTime(OpenDialog1.FileName, 3));
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
OpenDialog1.Execute;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if OpenDialog1.Execute then
SetFileDateTime(OpenDialog1.FileName);
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -