//获取文件版本
function getFileVersion(sFile: string; bIncludeBuild: boolean): string;
var
dwfvw, dwZero, dwvsf: DWORD;
Major, Minor, Release, Build: DWORD;
pfvw: PChar;
pvsf: PVSFixedFileInfo;
s: string;
begin
Result:='';
dwfvw:=GetFileVersionInfoSize(PChar(sFile), dwZero);
if dwfvw<>0 then
begin
GetMem(pfvw, dwfvw);
try
if(GetFileVersionInfo(PChar(sFile), dwZero, dwfvw, pfvw))then
begin
if(VerQueryValue(pfvw, '/', Pointer(pvsf), dwvsf))then
begin
if((pvsf^.dwFileFlags and VS_FF_PRERELEASE)>0)then
begin
s:='beta';
end
else begin
s:='';
end;
Major:=HIWORD(pvsf^.dwFileVersionMS);
Minor:=LOWORD(pvsf^.dwFileVersionMS);
Release:=HIWORD(pvsf^.dwFileVersionLS);
Build:=LOWORD(pvsf^.dwFileVersionLS);
Result:=pchar(Format('%d.%d.%d.%d', [Major, Minor, Release, Build]));
if bIncludeBuild then
begin
if Release>0 then
begin
Result:=pchar(Format('%d.%d.%d.%d', [Major, Minor, Release, Build]))
end
else begin
Result:=pchar(Format('%d.%d.%d', [Major, Minor, Build]))
end;
end
else begin
if Release>0 then begin
Result:=pchar(Format('%d.%d.%d', [Major, Minor, Release]))
end
else begin
Result:=pchar(Format('%d.%d', [Major, Minor]))
end;
end;
end;
end;
finally
FreeMem(pfvw);
end;
end;
end;
//获取修改日期
function GetFileModifyDate(sFile:string):TDatetime;
begin
if not FileAge(sFile, Result) then
Result := now();
end;
//获取文件大小
function GetFileSize(sFile:string):integer;
var f:file;
begin
AssignFile(f,sFile);
Reset(f);
Result := FileSize(f);
CloseFile(f);
end;