分享

请问delphi编译的exe文件的文件名可否自动带上版本号?

 quasiceo 2014-07-30
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;




    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多