以下方法也许是一个笨方法:
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