首页
社区
课程
招聘
[求助]最快的 GetFileSize 方法
发表于: 2008-6-7 03:08 4450

[求助]最快的 GetFileSize 方法

2008-6-7 03:08
4450
A:

{  Borland

function FindFirst(const Path: string; Attr: Integer;
  var  F: TSearchRec): Integer;
const
  faSpecial = faHidden or faSysFile or faVolumeID or faDirectory;
{$IFDEF MSWINDOWS}
begin
  F.ExcludeAttr := not Attr and faSpecial;
  F.FindHandle := FindFirstFile(PChar(Path), F.FindData);
  if F.FindHandle <> INVALID_HANDLE_VALUE then
  begin
    Result := FindMatchingFile(F);
    if Result <> 0 then FindClose(F);
  end else
    Result := GetLastError;
end;

}

function MyGetFileSize(Filename : String) : Integer;
var
  SearchRecA : TSearchRec;
  StartTime, EndTime:   integer;
begin
  StartTime:=GetTickCount;
  if Sysutils.FindFirst(Filename, faAnyFile, SearchRecA) = 0 then
  begin
  Result:= SearchRecA.Size;
  Sysutils.FindClose(SearchRecA);
  end else Result:=0;
  EndTime:=GetTickCount;
  showmessage('文件大小是: ' + Inttostr(Result) + '总共花了'+ Inttostr(EndTime-StartTime)+'ms');
end;

B:

function MyGetFileSizeA(Filename :PChar) : Integer;
var
  SearchRecA : TSearchRec;
  StartTime, EndTime:   integer;
  fhadle : THANDLE;
begin
  StartTime:=GetTickCount;
  fhadle := CreateFile(Filename,           //文件名或路径
                        0,
                        0,
                        0,
                        OPEN_EXISTING, //文件存在则打开并读取
                        0,
                        0);
  Result := GetFileSize(fhadle, 0);
  EndTime:=GetTickCount;
  showmessage('文件大小是: ' + Inttostr(Result) + '总共花了'+ Inttostr(EndTime-StartTime)+'ms');
end;

结果都不能分出谁快, 用谁好?
请大家指点下!!!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 22
活跃值: (423)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
做个线程 循环1000次 然后比时间
2008-6-7 11:26
0
雪    币: 22
活跃值: (423)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
function ......
  i:integer;
begin

.....
StartTime:=GetTickCount;
  for i:= 0 to 9999 do
  begin
  if Sysutils.FindFirst(Filename, faAnyFile, SearchRecA) = 0 then
  begin
  Result:= SearchRecA.Size;
  Sysutils.FindClose(SearchRecA);
  end else Result:=0;
  end;
  EndTime:=GetTickCount;
  ..............
2008-6-7 11:34
0
雪    币: 189
活跃值: (4810)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
谢谢!!!!!!!
2008-6-7 19:47
0
游客
登录 | 注册 方可回帖
返回
//