Project->Option...->Version Info->Include version information in project 打上勾 还需要在increse verion per-build上面打钩 然后你每次build 注意一定是BUILD不是complie软件就会自动升一个版本号,对exe文件点右键,就能在属性中看到版本号。 但是实际我们应用中是希望版本号出现在程序的标题栏里面或者是关于里面,谁老去看属性呢。 用下面的的函数取得当前程序的版本号。 function GetBuildInfo: string; {********************************** 功能:取得程序版本号 更新时间:20031111 ***********************************} var VerInfoSize: DWORD; VerInfo: Pointer; VerValueSize: DWORD; VerValue: PVSFixedFileInfo; Dummy: DWORD; V1: word; V2: word; V3: word; V4: word; begin VerInfoSize := GetFileVersionInfoSize(PChar(ParamStr(0)), Dummy); GetMem(VerInfo, VerInfoSize); GetFileVersionInfo(PChar(ParamStr(0)), 0, VerInfoSize, VerInfo); VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize); with VerValue^ do begin V1 := dwFileVersionMS shr 16; V2 := dwFileVersionMS and $FFFF; V3 := dwFileVersionLS shr 16; V4 := dwFileVersionLS and $FFFF; end; FreeMem(VerInfo, VerInfoSize); Result := IntToStr(V1) + '.' + IntToStr(V2) + '.' + IntToStr(V3) + '.' + IntToStr(V4); end; 如果程序没有版本信息,这段代码会执行出什么结果?哈哈 GetFileVersionInfoSize之后记得判断一下返回值VerInfoSize是否为0,否则后面的操作是无法操作的。 我现在的做法是在主菜单上面直接显示版本号,这样子用户就能够很方便地看到版本号。其中GetVersion的代码跟14楼差不太多。只是默认返回值为0.0.0.0,并对GetFileVersionInfoSize的返回值做了判断。 做法是: procedure TfrmAdapterMain.FormCreate(Sender: TObject); begin nmAbout.Caption := nmAbout.Caption +' V'+GetVersion; |
|