pb获取软件编译日期(时间)的快捷方法
栏目:sybase时间:2013-12-20 11:32:47
在用PB开发软件时,有时候需要根据日期来生成软件的版本号。比如软件的版本为V5,为了体现同一版本软件在不同日期下编译生成的版本差异化,我们有时候会在软件的版本后面加上build和日期,类似于这样:V5 build20110727 ,表示该软件的版本是V5,编译日期时2011-07-27 。
【V5 build】这一字符串在很长一段时间内基本上是固定的,但是【20110727】这一日期串是经常变动的。如何实时的添加这个日期串呢?
常规的做法有两种。
一、每次编译之前,手动更改该日期串为编译当日的日期。这种做法很简单,但是更改的步骤容易被我们遗忘。
二、通过API函数在软件运行过程中,动态获取软件exe文件的最后修改日期(获取方面可以参考我的博客:PB获取和设置文件最后修改日期的API方法 ),再赋值给日期串。这种做法比较复杂,需要了解API(当然封装成自定义对象后,使用起来也不会太麻烦),但是它能避免手动修改的易遗忘,保证每次编译后都能准确取到最后的编译日期。
本文所要介绍的这种方法,思路与上面的第二种有点类似,都是取软件编译日期,但是实现起来却是跟第一种方法一样简单,也不需要使用API函数。具体的做法如下:
[cpp]
string ls_ver = "V5 build" + string(today(), "yyyymmdd") //编译后ls_ver里面存储的值就是【V5 build加上编译的日期 】了
其实就是这么简单。 由于变量的初始值是在编译时形成的,因此,对于上面我们声明的string类型变量ls_ver 来说, 软件编译时,会自动获取编译时的日期,并将编译时的日期赋值给ls_ver 。
假设软件是在2011-07-27编译的那么上面的变量初始化赋值语句,等同于:
[cpp]
string ls_ver = "V5 build20110727”
其实也可以将这种思路理解为跟第一种方法类似,只是将“编译前手动更改该日期串为编译当日的日期”,自动化为“编译时自动更改该日期串为编译当日的日期”。
上面介绍的取编译日期的方法,只是一个很小的功能,但是对于我们程序员来说,它给了我们很多的启迪,我们可以按照这种思路,炮制出一大堆的应用。比如:取软件编译时的电脑名称、IP地址、网卡地址、操作系统信息等等。
希望我的这种做法,能够起到抛砖引玉的作用。
摘自 yyoinge的专栏
------分隔线----------------------------
------分隔线----------------------------