function GetVersion(sFile: string; bIncludeBuild: boolean): string;
点击次数:76 次 发布日期:2008-11-09 08:36:26 作者:源代码网
|
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; 软件开发网 www.mscto.com end; 源代码网推荐 源代码网供稿. |
