我要获得文件的名字,大小,创建时间
在FindFirst 函数中有个返回值 var F:TSearchRec中的属性FindData:TWin32FindData,可以获得文件的创建时间,但不知道怎么用,请教各位大哥!
假设要把创建时间显示到一个memo里还有个问题,TStrings是什么类型?和string,StringList有什么区别?procedure TForm1.CheckFile(LocalDIR:String;ServerDIR:String);
var
  SearchRec:TSearchRec;
begin
  memo1.Lines.Clear;
  if (FindFirst(ServerDIR+'*.*',faAnyFile,SearchRec)=0) then
  begin
    repeat
      if (CheckDIR(SearchRec)=0) then
      begin
        memo1.Lines.Add(SearchRec.Name);            //文件名
        memo1.Lines.Add(inttostr(SearchRec.Size));  //大小      end;
    until (FindNext(SearchRec) <> 0);
    FindClose(SearchRec);
  end;
end;

解决方案 »

  1.   

    function TFTPForm.GetFileCreateTime(const FName: String;
      var cTime: TDateTime): Boolean;
    var
      fHandle: HFILE;
      fStruct: _OFSTRUCT;
      ftCreation: _FILETIME;
      ftLastAccess: _FILETIME;
      ftLastWrite: _FILETIME;
      sTime: _SYSTEMTIME;
    begin
      fHandle := OpenFile(PChar(FName), fStruct, OF_READ);
      Result := (fHandle <> HFILE_ERROR);
      if Result then
      Begin
        Result := GetFileTime(fHandle, @ftCreation, @ftLastAccess, @ftLastWrite);
        if Result then
        begin
          Result := FileTimeToSystemTime(ftCreation, sTime);
          cTime := SystemTimeToDateTime(sTime);
        end;
      _lclose(fHandle);
      end;
    end;
      

  2.   

    function TForm2.GetFileLastAccessTime(sFileName:string):TDateTime;
    var
      ffd:TWin32FindData;
      dft:DWord;
      lft:TFileTime;
      h:THandle;
    begin
      h:=FindFirstFile(PChar(sFileName),ffd);
      if h<>INVALID_HANDLE_VALUE then
      begin
    {    case uFlag of
          FILE_CREATE_TIME:FileTimeToLocalFileTime(ffd.ftCreationTime,lft);//创建时间
          FILE_MODIFY_TIME:FileTimeToLocalFileTime(ffd.ftLastWriteTime,lft);//最后修改时间
          FILE_ACCESS_TIME:FileTimeToLocalFileTime(ffd.ftLastAccessTime,lft);//最后访问时间
        else
          FileTimeToLocalFileTime(ffd.ftLastAccessTime,lft);
        end;
    }
        FileTimeToLocalFileTime(ffd.ftCreationTime,lft);
        FileTimeToDosDateTime(lft,LongRec(dft).Hi,LongRec(dft).Lo);
        Result:=FileDateToDateTime(dft);
        windows.FindClose(h);
      end
      else
        result:=0;
    end;