procedure TForm1.Button18Click(Sender: TObject);
var
    FileHandle:Integer;
    FileTime:TFileTime;
    LocalFileTime:TFileTime;
    SystemTime:TSystemTime;
begin
    if(opendialog1.Execute) then
    edit4.Text:=opendialog1.FileName;
    FileHandle:=FileOpen(opendialog1.FileName,fmOpenWrite or fmShareDenyNone);
    if(FileHandle>0) then
    begin
      showmessage('good');
      FileTime.dwLowDateTime:=0;
      FileTime.dwHighDateTime:=0;
      Windows.GetFileTime(FileHandle,@FileTime,nil,nil);
      FileTimeToLocalFileTime(FileTime, LocalFileTime);
      FileTime:=LocalFileTime;
      FileClose(FileHandle);
      if FileTimeToSystemTime(FileTime, SystemTime) then
      edit7.Text := SystemTimeToDateTime(SystemTime);
    end
    else
      showmessage('error');
end;
我想取文件的创建时间在edit7.text里显示出来.怎么不行?程序怎么改?
顺便解释一下
FileTimeToLocalFileTime(FileTime, LocalFileTime);
      FileTime:=LocalFileTime;
这个转换有什么用啊?
还有FileTimeToSystemTime为什么要转化后输出?

解决方案 »

  1.   

    edit7.Text:=DateTimeToStr(SystemTimeToDateTime(SystemTime));
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
       f: file of Byte;
       size: Longint;
       S: string;
       FileName : string;
    begin
      begin
      FileName := 'd:\aa.txt';
      AssignFile(f,FileName);
        Reset(f);
        try
          size := FileSize(f);
          S := 'File size in bytes: ' + IntToStr(size);
          edit1.Text := DateTimeToStr(FileDateToDateTime(FileAge(FileName)));
        finally
          CloseFile(f);
        end;
      end;
    end;
      

  3.   

    function GetFileModify(FileName:string):TDateTime;
    //取得文件的最后修改时间
    var
      sr: TSearchRec;
      DT:Tdatetime;
      FileTime: TFileTime;
      DFT: DWORD;
    begin
      if findfirst(FileName,faanyfile,sr)=0 then
      begin
        FileTimeToLocalFileTime(SR.FINDdata.ftLastWriteTime, FileTime);
        FileTimeToDosDateTime(FileTime, LongRec(DFT).HI, LongRec(DFT).LO);
        DT:=filedatetodatetime(dft);
        Result:=DT;
      end 
    end;