J Jao Unregistered / Unconfirmed GUEST, unregistred user! 1999-10-06 #1 程序可能会被别人拷来拷去,程序名也可能被改动,所以不能用写定路径 和文件名的方法取得。
C cAkk Unregistered / Unconfirmed GUEST, unregistred user! 1999-10-06 #2 为什么不可以? 用application.exename就可以得到目前程序的名字,然后 读取他的版本号, 读取方法见 139289 贴子.
J Jams Unregistered / Unconfirmed GUEST, unregistred user! 1999-10-07 #4 你的程序里设个“机关”,在编一个小工具,只有你才能拥有,这样别人干的事情 还能逃过你的眼睛?!
C CJ Unregistered / Unconfirmed GUEST, unregistred user! 1999-10-07 #5 http://vcl.vclxx.com/DELPHI/D32FREE/FVERSION.ZIP
C cAkk Unregistered / Unconfirmed GUEST, unregistred user! 1999-10-08 #6 搞错! 原来不是版本, 是文件日期. 不过一样, 得到application.Exename, 然后读取它的日期.
A Alarm Unregistered / Unconfirmed GUEST, unregistred user! 1999-10-17 #10 定义一个全局变量存储编译日期。 Project|Options|FileVersion中确实没有编译日期,所以不如自己加一个。
P pxie Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-20 #13 Project|Options|FileVersion中确实没有编译日期,但版本信息 是可以增加内容的。在grid的最后按向下键,grid会自动添加 一行,可以键入自己定义的版本信息类型。如CompileDate, 这样就可以记录编译日期了。编译程序,察看执行文件的属性, 可以再版本页中见到自定义的信息。当然,用程序也可以读取。
Project|Options|FileVersion中确实没有编译日期,但版本信息 是可以增加内容的。在grid的最后按向下键,grid会自动添加 一行,可以键入自己定义的版本信息类型。如CompileDate, 这样就可以记录编译日期了。编译程序,察看执行文件的属性, 可以再版本页中见到自定义的信息。当然,用程序也可以读取。
A a_fi Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-20 #14 这是我的BCB 4源程序,诸位不妨探讨一下: void TForm1::Buildingtime() { AnsiString Srcfilename; Srcfilename="Pigeon_c.cpp" //这是我的源程序文件名 if(FileExists(Srcfilename)) { Label36->Caption="Build "+IntToStr(FileDateToDateTime(FileAge(Srcfilename))); //这一句存在问题:他的返回值是一个古怪的数值,根本就不是Srcfilename的日期 //最终显示 “Build 36749 ”,让我费解! } else } 诸位是如何实现的?我的这句错在哪里?
这是我的BCB 4源程序,诸位不妨探讨一下: void TForm1::Buildingtime() { AnsiString Srcfilename; Srcfilename="Pigeon_c.cpp" //这是我的源程序文件名 if(FileExists(Srcfilename)) { Label36->Caption="Build "+IntToStr(FileDateToDateTime(FileAge(Srcfilename))); //这一句存在问题:他的返回值是一个古怪的数值,根本就不是Srcfilename的日期 //最终显示 “Build 36749 ”,让我费解! } else } 诸位是如何实现的?我的这句错在哪里?
Z Zephyr Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-20 #15 本人意见,要实现记录编译日期,有两种方法:人工及自动(某人:简直是废话!) ……还有人要听吗? 人工方法就是象各位上面说的了,例如读取EXE文件的日期啦、在版本信息里增加一项编译 日期的记录、在程序中写入编译日期等等。但这些方法虽然简单,但并不能达到最佳效果, 且有不少弊病。如用读取EXE文件日期的方法,如果文件日期被改动了,读出的“编译日期” 就不是正确的;至于用增加版本信息及硬编码日期的方式,又不方便,这么做的话,岂不是 每次编译之前都要去修改。 至于“自动”的方法,其实很简单。各位不都是用的Delphi吗?它具有可扩展其IDE的功能, 就是Expert啦。我们可以写一个<B>自动在编译时在程序中写入编译日期</B>的Expert,在 该Expert中创建一个TIAddInNotifier对象,该对象有一个EventNotification过程,在IDE 编译我们的源程序之前,会调用该过程,并将该过程的一个参数NotifyCode的值设置为 enBeforeCompile。由于该过程是virtual兼abstract,也就是说我们必须自己实现它,这样 就可以在我们自己实现的EventNotification过程中,当接收到NotifyCode为enBeforeCompile 时在源码中的某个地方插入(或者修改事先定义的)一个常量/变量,并把其值设置为当前的 日期和时间,例如: Const // 用var也行 CompileDateTime: string = '2000-8-20 18:00'; 然后在程序中需要显示编译日期的地方使用这个常量/变量。注意,我的意思是在即将编译 之前<B>修改源码</B>。 这种方法我个人认为是比较好的方法,只需写一个Expert就能一次性解决问题,而且所记录 的编译日期也是很准确的。 不知各位以为如何呢?
本人意见,要实现记录编译日期,有两种方法:人工及自动(某人:简直是废话!) ……还有人要听吗? 人工方法就是象各位上面说的了,例如读取EXE文件的日期啦、在版本信息里增加一项编译 日期的记录、在程序中写入编译日期等等。但这些方法虽然简单,但并不能达到最佳效果, 且有不少弊病。如用读取EXE文件日期的方法,如果文件日期被改动了,读出的“编译日期” 就不是正确的;至于用增加版本信息及硬编码日期的方式,又不方便,这么做的话,岂不是 每次编译之前都要去修改。 至于“自动”的方法,其实很简单。各位不都是用的Delphi吗?它具有可扩展其IDE的功能, 就是Expert啦。我们可以写一个<B>自动在编译时在程序中写入编译日期</B>的Expert,在 该Expert中创建一个TIAddInNotifier对象,该对象有一个EventNotification过程,在IDE 编译我们的源程序之前,会调用该过程,并将该过程的一个参数NotifyCode的值设置为 enBeforeCompile。由于该过程是virtual兼abstract,也就是说我们必须自己实现它,这样 就可以在我们自己实现的EventNotification过程中,当接收到NotifyCode为enBeforeCompile 时在源码中的某个地方插入(或者修改事先定义的)一个常量/变量,并把其值设置为当前的 日期和时间,例如: Const // 用var也行 CompileDateTime: string = '2000-8-20 18:00'; 然后在程序中需要显示编译日期的地方使用这个常量/变量。注意,我的意思是在即将编译 之前<B>修改源码</B>。 这种方法我个人认为是比较好的方法,只需写一个Expert就能一次性解决问题,而且所记录 的编译日期也是很准确的。 不知各位以为如何呢?
Z Zephyr Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-23 #17 不需要代码了,我昨晚在网上找到一个现成的,效果不错,它使用的方法和我的想法差不 多,只是它用的是包含文件(*.inc文件),也是定义一个包含编译时间的常量。你可以去 <a href="http://www.torry.ru/">Torry's Delphi Pages</a> 瞧瞧,或者直接从这里下载:<a href="http://www.torry.ru/vcl/experts/other/cmptime4.zip"> For D4</a> <a href="http://www.torry.ru/vcl/experts/cmptime5.zip">For D5</a>
不需要代码了,我昨晚在网上找到一个现成的,效果不错,它使用的方法和我的想法差不 多,只是它用的是包含文件(*.inc文件),也是定义一个包含编译时间的常量。你可以去 <a href="http://www.torry.ru/">Torry's Delphi Pages</a> 瞧瞧,或者直接从这里下载:<a href="http://www.torry.ru/vcl/experts/other/cmptime4.zip"> For D4</a> <a href="http://www.torry.ru/vcl/experts/cmptime5.zip">For D5</a>