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

王朝delphi·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

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;

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航