fn.FindData.ftCreationTime.dwlowDateTime
其中fn是TSearchRec.
我得到的是int类型的,怎样转换成data呢??

解决方案 »

  1.   

    获取文件建立修改日期
    uses Windows,ShellAPI; // ================================================================ 
    // Return the three dates (Created,Modified,Accessed) 
    // of a given filename. Returns FALSE if file cannot 
    // be found or permissions denied. Results are returned 
    // in TdateTime VAR parameters 
    // ================================================================ function GetFileTimes(FileName : string; 
                          var Created  : TDateTime; 
                          var Modified : TDateTime; 
                          var Accessed : TDateTime) : boolean; 
    var FileHandle : integer; 
        Retvar : boolean; 
        FTimeC,FTimeA,FTimeM : TFileTime; 
        LTime : TFileTime; 
        STime : TSystemTime; 
    begin 
      FileHandle := FileOpen(FileName,fmShareDenyNone); 
      Created := 0.0; 
      Modified := 0.0; 
      Accessed := 0.0;   if FileHandle < 0 then 
         RetVar := false 
      else begin 
         RetVar := true; 
         GetFileTime(FileHandle,@FTimeC,@FTimeA,@FTimeM); 
         FileClose(FileHandle);      // Created 
         FileTimeToLocalFileTime(FTimeC,LTime); 
         if FileTimeToSystemTime(LTime,STime) then begin 
           Created := EncodeDate(STime.wYear,STime.wMonth,STime.wDay); 
           Created := Created + EncodeTime(STime.wHour,STime.wMinute,STime.wSecond,STime.wMilliSeconds); 
         end;      // Accessed 
         FileTimeToLocalFileTime(FTimeA,LTime); 
         if FileTimeToSystemTime(LTime,STime) then begin 
           Accessed := EncodeDate(STime.wYear,STime.wMonth,STime.wDay); 
           Accessed := Accessed + EncodeTime(STime.wHour,STime.wMinute,STime.wSecond,STime.wMilliSeconds); 
         end;      // Modified 
         FileTimeToLocalFileTime(FTimeM,LTime); 
         if FileTimeToSystemTime(LTime,STime) then begin 
           Modified := EncodeDate(STime.wYear,STime.wMonth,STime.wDay); 
           Modified := Modified + EncodeTime(STime.wHour,STime.wMinute,STime.wSecond,STime.wMilliSeconds); 
         end;   end;   Result := RetVar; 
    end; 
    procedure Test; 
    var CDate,MDate,ADate : TDateTime; 
    begin 
       if GetFileTimes('c:\autoexec.bat',CDate,MDate,ADate) then begin 
          Label1.Caption := FormatDateTime('dd/mm/yyyy hh:nn',CDate); 
          Label2.Caption := FormatDateTime('dd/mm/yyyy hh:nn',MDate); 
          Label3.Caption := FormatDateTime('dd/mm/yyyy hh:nn',ADate); 
       end; 
    end; 
      

  2.   

    FileDateToDateTime(FileAge(FileName));
      

  3.   

    DateTimeToStr(FileAge(fn.Name))
    得到的无论任何文件,都是1899-12-29呀
      

  4.   

    感谢各位,能得到时间了,但是DateTimeToStr(FileDateToDateTime(FileAge(path+fn.Name)))得到的是年-月-日-时-分-秒
    我想只要显示年月日,怎么做呢?
      

  5.   

    szDate := DateTimeToStr(FileDateToDateTime(FileAge(path+fn.Name)));szDate := Copy(szDate,1,8);
      

  6.   

    对不起,应该是szDate  :=  Copy(szDate,1,10);