繁体中文
设为首页
加入收藏
当前位置:程序开发首页 >> Delphi >> function GetVersion(sFile: string; bIncludeBuild: boolean): string;

function GetVersion(sFile: string; bIncludeBuild: boolean): string;

2007-11-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:function GetVersion(sFile: string; bIncludeBuild: boolean): string; var dwfvw, dwZero, dwvsf: DWORD; Major, Minor, Release, Build: DWord; pfvw: PChar; pvsf: PVSFixedFileInfo; s: string; begin Resu...

function GetVersion(sFile: string; bIncludeBuild: boolean): string;

var

dwfvw, dwZero, dwvsf: DWORD;

Major, Minor, Release, Build: DWord;

pfvw: PChar;

pvsf: PVSFixedFileInfo;

s: string;

begin

Result := ´´;

// attempt to read version info size

dwfvw := GetFileVersionInfoSize(PChar(sFile), dwZero); // exit on error

if dwfvw <> 0 then begin

GetMem(pfvw, dwfvw);

try // exit if unable to retrieve version info

if (GetFileVersionInfo(PChar(sFile), dwZero, dwfvw, pfvw)) then begin // get the build value

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;

// For clarity store in temporary variables

Major := HIWORD(pvsf^.dwFileVersionMS);

Minor := LOWORD(pvsf^.dwFileVersionMS);

Release := HIWORD(pvsf^.dwFileVersionLS);

Build := LOWORD(pvsf^.dwFileVersionLS);

// Always show full Build Numbers from now GN.. 2/9/03

Result := Format(´Version %d.%d.%d Build %d´, [Major, Minor, Release,

Build]);

if bIncludeBuild then begin

if Release > 0 then begin

Result := Format(´Version %d.%d.%d Build %d´, [Major, Minor,

Release, Build])

end

else begin

Result := Format(´Version %d.%d Build %d´, [Major, Minor, Build])

end;

end

else begin

if Release > 0 then begin

Result := Format(´Version %d.%d.%d´, [Major, Minor, Release])

end

else begin

Result := Format(´Version %d.%d´, [Major, Minor])

end;

end;

end;

end;

finally

FreeMem(pfvw);

end;

end;

end;

责任编辑:admin
相关文章