delphi 怎样通过文件名排序和修改时间排序  
官方Delphi 学习QQ群: 682628230(三千人)
频道

delphi 怎样通过文件名排序和修改时间排序


以下方法也许是一个笨方法:

1.先用函数得到所指定目录的所有文件名.

2.得到每个文件的最后修改时间

3.存入数据库,然后排序得出最新的修改文件

仅作参与,按需自行修改.


unit Unit1;


interface


uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, DB, ADODB;


type

  TForm1 = class(TForm)

    Button1: TButton;

    Edit1: TEdit;

    ListBox1: TListBox;

    ListBox2: TListBox;

    ADOQuery1: TADOQuery;

    procedure Button1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

    procedure  searchfile(path:string);

    function  GetFileModifyDate(FileName:   String):   TDateTime;

  end;


var

  Form1: TForm1;


implementation


{$R *.dfm}


{--得到文件名的最后修改时间--}


function   TForm1.GetFileModifyDate(FileName:   String):   TDateTime;


  var   FileHandle   :   THandle;   

          LocalFileTime   :   TFileTime;   

          DosFileTime   :   DWORD;

          LastModifyTime   :   TDateTime;   

          FindData   :   TWin32FindData;   

  begin   

        FileHandle   :=   FindFirstFile(PChar(FileName),   FindData);   

        if   FileHandle   <>   INVALID_HANDLE_VALUE   then   

              begin   

                    Windows.FindClose(FileHandle);   

                    if   (FindData.dwFileAttributes   and   FILE_ATTRIBUTE_DIRECTORY)   =   0   then   

                          begin   

                                FileTimeToLocalFileTime(FindData.ftLastWriteTime,   LocalFileTime);   

                                FileTimeToDosDateTime(LocalFileTime,   

                                LongRec(DosFileTime).Hi,LongRec(DosFileTime).Lo);   

                                LastModifyTime   :=   FileDateToDateTime(DosFileTime);   

                                Result:=LastModifyTime;   

                          end;   

              end;   

  end;






procedure  TForm1.searchfile(path:string);//得到目录所有的文件名,存入 ListBox1.Items中

   var

       SearchRec:TSearchRec;

       found:integer;

   begin

       found:=FindFirst(path+'*.*',faAnyFile,SearchRec);

       while    found=0    do

         begin

             if    (SearchRec.Name<>'.')    and    (SearchRec.Name<>'..')

                   and    (SearchRec.Attr<>faDirectory)    then   

                 ListBox1.Items.Add(SearchRec.Name);

             found:=FindNext(SearchRec);

         end;

       FindClose(SearchRec);

end;


procedure TForm1.Button1Click(Sender: TObject);

var

s,n_new:string;

i:integer;

begin

  s:=edit1.Text;{c:\sink\         目录后要加\}

  searchfile(s);

  for i :=0  to ListBox1.Items.Count-1 do begin

    n_new:=s+ListBox1.Items.Strings[i];

    ListBox2.Items.Add(ListBox1.Items.Strings[i]+'  '+datetimetostr(GetFileModifyDate(n_new)));

    with adoquery1 do begin

      append;

     FieldValues['filename']:=ListBox1.Items.Strings[i];

     FieldValues['filtrime']:=GetFileModifyDate(n_new);

     post;

    end;

  end;


  with adoquery1 do begin

   close;

   sql.text:='select top 1 * from x_eng ORDER BY filtrime DESC';

   open;

   edit1.Text:=FieldByName('filename').AsString;{得到最新修改的文件名}

  end;

end;


end.



推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.035953044891357 seconds