奇趣技术网 收藏本站
设为主页
商务合作
首页 新闻中心 行业动态 软件新闻 安全资讯 病毒预警 漏洞发布 操作系统 Dos Win9x Win2000 WinXP Win2003 WinVista Linux Unix
数据库 DB2 Access MSSQL MySQL Oracle Sybase 编程技术 ASP PHP JSP CGI/Perl XML .Net C/C++/C# VB VC Delphi Java 汇编
安全技术 安全教学 工具介绍 漏洞利用 病毒防范 入侵检测 防火墙 安全防范 汉化破解 攻击实例 加密解密 技术论坛
中华网络安全联盟 >> 程序开发 >> Delphi >> 在Delphi中获取和修改文件的时间
程序开发
Asp
PHP
JSP
CGI/Perl
XML
.Net
C/C++/C#
Visual Basic
Visual C++
Delphi
Java
汇编语言
  • Delphi实现网页表单数

  • 用Delphi开发Web服务数

  • Delphi中利用钩子实现

  • 一个判断定文件是否为

  • 把Flash文件转换为Exe

  • 用Delphi实现文件下载

  • Delphi中保存图像列表

  • 基于Delphi的接口编程

  • 在Delphi中获取和修改文件的时间
    字体:

    中华网络安全联盟    作者:佚名    来源:网络转载    时间:2006-3-22

      本文介绍了在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年或更高。另外,请不要将此技术用于破坏他人文件等非正当途径。

    字体:
     
    设为主页 收藏本站 联系我们 友情连接 商务合作 网友留言
    Copyright©2006-2008 中华网络安全联盟 All rights reserved.