DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: cuiqingbo
今日帖子: 25
在线用户: 11
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 lwcvod (lwcvod) ★☆☆☆☆ -
普通会员
2018/9/25 17:28:27
标题:
求编译自动把时间作为版本号 浏览:3012
加入我的收藏
楼主: 以前同事会设置,现在发现自己不会设置
求助知道的大虾出来指点下
此帖子包含附件:
JPEG 图像
大小:57.4K
----------------------------------------------
Delphi
作者:
男 lwcvod (lwcvod) ★☆☆☆☆ -
普通会员
2018/9/25 17:29:09
1楼: 版本里面的 年,月,日 自动加进去的,最末以为为,编译的次数
----------------------------------------------
Delphi
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/9/25 17:53:07
2楼: 我只知道 NSIS INNO 可以写脚本。
DELPHI 是不是支持写脚本就不知道。
但是 DELPHI 是存在编译事件的,编译前,编译后。但是这些事件,能做什么,就不知道了。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 keymark (嬲) ▲▲▲△△ -
普通会员
2018/9/25 17:55:41
3楼: auto-increment build number

or
build events
or
cnpack script
https://blog.csdn.net/zisongjia/article/details/68927919
+
http://bbs.cnpack.org/viewthread.php?tid=6438&extra=page%3D1###
10楼...好像浏览器不跳转...
----------------------------------------------
[alias]  co = clone --recurse-submodules  up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
男 earthsbest (全能中间件) ▲▲▲▲△ -
普通会员
2018/9/25 19:18:23
4楼: 用cnpack的脚本:

{**********}
{          }
{       Pascal Script Source File          }
{       Run by RemObjects Pascal Script in CnWizards    }
{          }
{       Generated by CnPack IDE Wizards          }
{          }
{**********}

program IncProjBuild;

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ToolsAPI, CnCommon, CnWizUtils,DateUtils;
var
  Options: IOTAProjectOptions;
  Project: IOTAProject;
  MajorVer, MinorVer, ReleaseNo, BuildNo: Integer;

begin
  Options := CnOtaGetActiveProjectOptions(nil);
  if Options = nil then
    Exit;
  Project := CnOtaGetCurrentProject;
  if Project = nil then
    Exit;

  if (Compiler = cnDelphi5) or (Compiler = cnBCB5) then
  begin
    if not QueryDlg('This function maybe can NOT run correctly in Delphi 5 or C++Builder 5 for an OTA Bug.'
      + #13#10#13#10 + 'Do you want to Continue?', False) then
      Exit;
  end;

  // Get the Versions
  MajorVer := Options.GetOptionValue('MajorVersion');
  MinorVer := Options.GetOptionValue('MinorVersion');
  ReleaseNo := Options.GetOptionValue('Release');
  BuildNo := Options.GetOptionValue('Build');

  if QueryDlg(Format('Current Project Version is %d.%d.%d.%d. Inc the Build Number?',
    [MajorVer, MinorVer, ReleaseNo, BuildNo]), False) then
  begin

    CnOtaSetProjectOptionValue(Options, 'MajorVersion', Format('%d', [YearOf(Now)]));
    CnOtaSetProjectOptionValue(Options, 'MinorVersion', Format('%d', [MonthOf(Now)]));
    CnOtaSetProjectOptionValue(Options, 'Release', Format('%d', [DayOf(Now)]));

    BuildNo := BuildNo + 1;
    CnOtaSetProjectOptionValue(Options, 'Build', Format('%d', [BuildNo]));

    // Re-Get the Versions.
    MajorVer := Options.GetOptionValue('MajorVersion');
    MinorVer := Options.GetOptionValue('MinorVersion');
    ReleaseNo := Options.GetOptionValue('Release');
    BuildNo := Options.GetOptionValue('Build');

    // Note: In Delphi 5/C++Builder 5, there's a BUG.
    // Nubers are correct here, but maybe unchanged in Project Options Dialog.
    InfoDlg(Format('Current Project Version is %d.%d.%d.%d.',
      [MajorVer, MinorVer, ReleaseNo, BuildNo]));
  end;

end.
----------------------------------------------
Delphi4Linux Delphi三层/FireDAC 技术群:734515869 http://www.cnblogs.com/rtcmw
作者:
男 zhahongyi (如风) ★☆☆☆☆ -
普通会员
2018/9/25 22:30:12
5楼: 请教下楼上,为什么我添加DateUtils单元后就提示编译失败,其他什么代码都未改动。
此帖子包含附件:
PNG 图像
大小:37.7K
----------------------------------------------
-
作者:
男 earthsbest (全能中间件) ▲▲▲▲△ -
普通会员
2018/9/26 8:23:11
6楼: 去掉DateUtils,其中几行改成这样:
    DecodeDate(Now, Year, Month, Day);
    CnOtaSetProjectOptionValue(Options, 'MajorVersion', Format('%d', [Year]));
    CnOtaSetProjectOptionValue(Options, 'MinorVersion', Format('%d', [Month]));
    CnOtaSetProjectOptionValue(Options, 'Release', Format('%d', [Day]));
----------------------------------------------
Delphi4Linux Delphi三层/FireDAC 技术群:734515869 http://www.cnblogs.com/rtcmw
作者:
男 lwcvod (lwcvod) ★☆☆☆☆ -
普通会员
2018/9/26 8:28:59
7楼: 全能大神,求具体用法,,如何加入到  cnpack 里去使用
----------------------------------------------
Delphi
作者:
男 zhahongyi (如风) ★☆☆☆☆ -
普通会员
2018/9/26 8:51:18
8楼: 谢谢全能,已成功!

楼上见图,记得把脚本有效√上,我忘勾了
此帖子包含附件:
PNG 图像
大小:99.5K
----------------------------------------------
-
作者:
男 lwcvod (lwcvod) ★☆☆☆☆ -
普通会员
2018/9/26 8:58:26
8楼: 也不知道什么地方设置错误了
此帖子包含附件:
JPEG 图像
大小:405.6K
----------------------------------------------
Delphi
作者:
男 lwcvod (lwcvod) ★☆☆☆☆ -
普通会员
2018/9/26 8:59:39
9楼: 我生成的 exe 版本还是没有改变呢
----------------------------------------------
Delphi
作者:
男 zhahongyi (如风) ★☆☆☆☆ -
普通会员
2018/9/26 9:04:07
10楼: 答案见6楼
----------------------------------------------
-
作者:
男 lwcvod (lwcvod) ★☆☆☆☆ -
普通会员
2018/9/26 9:06:31
11楼: 编译的我修改过了,但是,版本号就是不会改,,工程属性需要不需要改个什么不?
----------------------------------------------
Delphi
作者:
男 zhahongyi (如风) ★☆☆☆☆ -
普通会员
2018/9/26 9:09:10
12楼: 看看这个,再就没有其他设置了。
此帖子包含附件:
PNG 图像
大小:21.3K
----------------------------------------------
-
作者:
男 lwcvod (lwcvod) ★☆☆☆☆ -
普通会员
2018/9/26 9:21:25
13楼: 怎么搞都搞不定,编译都是通过的,版本都会提示是 时间日期的,,就是不会自动加入到工程的版本里面去
----------------------------------------------
Delphi
作者:
男 lwcvod (lwcvod) ★☆☆☆☆ -
普通会员
2018/9/26 9:26:29
14楼: 如风能加个QQ远程帮我看看不
----------------------------------------------
Delphi
作者:
男 earthsbest (全能中间件) ▲▲▲▲△ -
普通会员
2018/9/26 9:30:49
15楼: 在10.2中有bug,我已反馈给cnpack 了,马上就有新版。
----------------------------------------------
Delphi4Linux Delphi三层/FireDAC 技术群:734515869 http://www.cnblogs.com/rtcmw
作者:
男 lwcvod (lwcvod) ★☆☆☆☆ -
普通会员
2018/9/26 9:31:07
15楼: program IncProjBuild;

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ToolsAPI, CnCommon, CnWizUtils;
var
  Options: IOTAProjectOptions;
  Project: IOTAProject;
  BuildNo: Integer;
  Year, Month, Day:Word;
begin
  Options := CnOtaGetActiveProjectOptions(nil);
  if Options = nil then
    Exit;
  Project := CnOtaGetCurrentProject;
  if Project = nil then
    Exit;

  if (Compiler = cnDelphi5) or (Compiler = cnBCB5) then
  begin
    if not QueryDlg('This function maybe can NOT run correctly in Delphi 5 or C++Builder 5 for an OTA Bug.'
      + #13#10#13#10 + 'Do you want to Continue?', False) then
      Exit;
  end;

  // Get the Versions
    DecodeDate(Now, Year, Month, Day);
    CnOtaSetProjectOptionValue(Options, 'MajorVersion', Format('%d', [Year]));
    CnOtaSetProjectOptionValue(Options, 'MinorVersion', Format('%d', [Month]));
    CnOtaSetProjectOptionValue(Options, 'Release', Format('%d', [Day]));
    BuildNo := Options.GetOptionValue('Build');

  if QueryDlg(Format('Current Project Version is %d.%d.%d.%d. Inc the Build Number?',
    [Year, Month, Day, BuildNo]), False) then
  begin

    CnOtaSetProjectOptionValue(Options, 'MajorVersion', Format('%d', [Year]));
    CnOtaSetProjectOptionValue(Options, 'MinorVersion', Format('%d', [Month]));
    CnOtaSetProjectOptionValue(Options, 'Release', Format('%d', [Day]));

    BuildNo := BuildNo + 1;
    CnOtaSetProjectOptionValue(Options, 'Build', Format('%d', [BuildNo]));

    // Re-Get the Versions.
    DecodeDate(Now, Year, Month, Day);
    CnOtaSetProjectOptionValue(Options, 'MajorVersion', Format('%d', [Year]));
    CnOtaSetProjectOptionValue(Options, 'MinorVersion', Format('%d', [Month]));
    CnOtaSetProjectOptionValue(Options, 'Release', Format('%d', [Day]));
    BuildNo := Options.GetOptionValue('Build');

    // Note: In Delphi 5/C++Builder 5, there's a BUG.
    // Nubers are correct here, but maybe unchanged in Project Options Dialog.
    InfoDlg(Format('Current Project Version is %d.%d.%d.%d.',
      [Year, Month, Day, BuildNo]));
  end;

end.



有什么不对吗????
----------------------------------------------
Delphi
作者:
男 lwcvod (lwcvod) ★☆☆☆☆ -
普通会员
2018/9/26 9:33:02
16楼: 为什么就是不会改变工程里面的呢
此帖子包含附件:
JPEG 图像
大小:488.7K
----------------------------------------------
Delphi
作者:
男 lwcvod (lwcvod) ★☆☆☆☆ -
普通会员
2018/9/26 9:34:24
17楼: 全能,我在  XE2  和 10.1 里面都不行
----------------------------------------------
Delphi
作者:
男 zhahongyi (如风) ★☆☆☆☆ -
普通会员
2018/9/26 9:35:58
17楼: 我用XE没有问题,一切正常。全能说有bug已提交,要不你等等?
----------------------------------------------
-
作者:
男 lwcvod (lwcvod) ★☆☆☆☆ -
普通会员
2018/9/26 9:37:32
18楼: 之前我同事就是 XE2 没有问题的,,这这这,,,
----------------------------------------------
Delphi
作者:
男 zhahongyi (如风) ★☆☆☆☆ -
普通会员
2018/9/26 9:40:01
19楼: 细看了下,你的代码有问题呀!你用下面这个,验证过没问题。

{ ********** }
{ }
{ Pascal Script Source File }
{ Run by RemObjects Pascal Script in CnWizards }
{ }
{ Generated by CnPack IDE Wizards }
{ }
{ ********** }

program IncProjBuild;

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ToolsAPI, CnCommon, CnWizUtils;

var
  Options: IOTAProjectOptions;
  Project: IOTAProject;
  MajorVer, MinorVer, ReleaseNo, BuildNo: Integer;
  Year, Month, Day: Word;

begin
  Options := CnOtaGetActiveProjectOptions(nil);
  if Options = nil then
    Exit;
  Project := CnOtaGetCurrentProject;
  if Project = nil then
    Exit;

  if (Compiler = cnDelphi5) or (Compiler = cnBCB5) then
  begin
    if not QueryDlg('This function maybe can NOT run correctly in Delphi 5 or C++Builder 5 for an OTA Bug.' +
      #13#10#13#10 + 'Do you want to Continue?', False) then
      Exit;
  end;

  MajorVer := Options.GetOptionValue('MajorVersion');
  MinorVer := Options.GetOptionValue('MinorVersion');
  ReleaseNo := Options.GetOptionValue('Release');
  BuildNo := Options.GetOptionValue('Build');

  if QueryDlg(Format('Current Project Version is %d.%d.%d.%d. Inc the Build Number?', [MajorVer, MinorVer, ReleaseNo,
    BuildNo]), False) then
  begin
    DecodeDate(Now, Year, Month, Day);
    CnOtaSetProjectOptionValue(Options, 'MajorVersion', Format('%d', [Year]));
    CnOtaSetProjectOptionValue(Options, 'MinorVersion', Format('%d', [Month]));
    CnOtaSetProjectOptionValue(Options, 'Release', Format('%d', [Day]));

    if MajorVer + MinorVer + ReleaseNo <> Year + Month + Day then
      BuildNo := 1
    else
      BuildNo := BuildNo + 1;
    CnOtaSetProjectOptionValue(Options, 'Build', Format('%d', [BuildNo]));

    // Re-Get the Versions.
    MajorVer := Options.GetOptionValue('MajorVersion');
    MinorVer := Options.GetOptionValue('MinorVersion');
    ReleaseNo := Options.GetOptionValue('Release');
    BuildNo := Options.GetOptionValue('Build');

    // Note: In Delphi 5/C++Builder 5, there's a BUG.
    // Nubers are correct here, but maybe unchanged in Project Options Dialog.
    InfoDlg(Format('Current Project Version is %d.%d.%d.%d.', [MajorVer, MinorVer, ReleaseNo, BuildNo]));
  end;

end.
----------------------------------------------
-
作者:
男 earthsbest (全能中间件) ▲▲▲▲△ -
普通会员
2018/9/26 9:47:23
20楼: 可能和cnpack版本有关,如果出现下面的对话框,IDE版本识别错了,就无法写入版本信息了。
if (Compiler = cnDelphi5) or (Compiler = cnBCB5) then
  begin
    if not QueryDlg('This function maybe can NOT run correctly in Delphi 5 or C++Builder 5 for an OTA Bug.' +
      #13#10#13#10 + 'Do you want to Continue?', False) then
      Exit;
  end;
----------------------------------------------
Delphi4Linux Delphi三层/FireDAC 技术群:734515869 http://www.cnblogs.com/rtcmw
作者:
男 lwcvod (lwcvod) ★☆☆☆☆ -
普通会员
2018/9/26 9:52:55
20楼: 如风 我用你贴出来的代码,还是搞不定

你cnpack  是什么版本的??
----------------------------------------------
Delphi
作者:
男 zhahongyi (如风) ★☆☆☆☆ -
普通会员
2018/9/26 9:55:23
21楼: Ver: 1.1.4.924 Build 2018.02.21
----------------------------------------------
-
作者:
男 lwcvod (lwcvod) ★☆☆☆☆ -
普通会员
2018/9/26 10:16:37
22楼: 我也不知道为什么,,我就是搞不定
----------------------------------------------
Delphi
作者:
男 keymark (嬲) ▲▲▲△△ -
普通会员
2018/9/26 14:00:20
23楼: 4# script run 
CnScriptRegister
uses add uPSComponent_Default
 initialization
  add RegisterCnScriptPlugin(TPSImport_DateUtils);
uPSC_dateutils
 RegisterDatetimeLibrary_C  
  add 
//--
s.AddDelphiFunction('function YearOf(const AValue: TDateTime): Word;');
s.AddDelphiFunction('function MonthOf(const AValue: TDateTime): Word;');
s.AddDelphiFunction('function WeekOf(const AValue: TDateTime): Word;');
s.AddDelphiFunction('function DayOf(const AValue: TDateTime): Word;');
s.AddDelphiFunction('function HourOf(const AValue: TDateTime): Word;');
s.AddDelphiFunction('function MinuteOf(const AValue: TDateTime): Word;');
s.AddDelphiFunction('function SecondOf(const AValue: TDateTime): Word;');
s.AddDelphiFunction('function MilliSecondOf(const AValue: TDateTime): Word;');

uPSR_dateutils
   RegisterDateTimeLibrary_R
    add
//-
S.RegisterDelphiFunction(@YearOf,'YearOf', cdRegister);
S.RegisterDelphiFunction(@MonthOf,'MonthOf', cdRegister);
S.RegisterDelphiFunction(@WeekOf,'WeekOf', cdRegister);
S.RegisterDelphiFunction(@DayOf,'DayOf', cdRegister);
S.RegisterDelphiFunction(@HourOf,'HourOf', cdRegister);
S.RegisterDelphiFunction(@MinuteOf,'MinuteOf', cdRegister);
S.RegisterDelphiFunction(@SecondOf,'SecondOf', cdRegister);
S.RegisterDelphiFunction(@MilliSecondOf,'MilliSecondOf', cdRegister);

conditional defines add    IS_MASTER
build cnpackide dll
    copy dll in reg dir
Test
 delphi 2007 up4 dec
 and cnpack ide 0.9.7.595 src 
ok
----------------------------------------------
[alias]  co = clone --recurse-submodules  up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
男 keymark (嬲) ▲▲▲△△ -
普通会员
2018/9/26 14:55:53
24楼: 2007 up4 dec 
Options.GetOptionNames 所有数据
tkLString HostApplication-0
tkUnknown 2
tkDynArray 3
tkUnknown 5
tkUnknown 7
tkLString Launcher-8
tkUnknown 10
tkDynArray 11
tkInt64 12
tkUnknown 13
tkUnknown 15
tkLString RemoteParams-16
tkUnknown 18
tkUnknown 21
tkUnknown 23
tkEnumeration 24
tkUnknown 26
tkUnknown 29
tkUnknown 31
tkInteger 32
tkUnknown 34
tkUnknown 37
tkUnknown 39
tkInteger 40
tkUnknown 42
tkDynArray 43
tkUnknown 45
tkUnknown 47
tkInteger 48
tkUnknown 50
tkDynArray 51
tkMethod 52
tkUnknown 53
tkUnknown 55
tkInteger 56
tkUnknown 58
tkUnknown 61
tkUnknown 63
tkEnumeration 64
tkUnknown 66
tkDynArray 67
tkUnknown 69
tkUnknown 71
tkEnumeration 72
tkUnknown 74
tkMethod 76
tkUnknown 77
tkUnknown 79
tkEnumeration 80
tkUnknown 82
tkDynArray 83
tkUnknown 84
tkUnknown 85
tkUnknown 87
tkLString Defines-88
tkEnumeration 89
tkUnknown 90
tkDynArray 91
tkMethod 92
tkUnknown 93
tkUnknown 95
tkLString ObjDir-96
tkUnknown 98
tkDynArray 99
tkUnknown 101
tkUnknown 103
tkLString OptionsString-104
tkRecord 105
tkUnknown 106
tkDynArray 107
tkUnknown 109
tkUnknown 111
tkLString SOVersion-112
tkChar 113
tkUnknown 114
tkDynArray 115
tkUnknown 117
tkUnknown 119
tkEnumeration 120
tkUnknown 122
tkInt64 124
tkUnknown 125
tkUnknown 127
tkInteger 128
tkUnknown 130
tkUnknown 133
tkUnknown 135
tkInteger 136
tkUnknown 138
tkUnknown 141
tkUnknown 143
tkInteger 144
tkUnknown 146
tkDynArray 147
tkUnknown 149
tkUnknown 151
tkInteger 152
tkUnknown 154
tkUnknown 157
tkUnknown 159
tkInteger 160
tkUnknown 162
tkDynArray 163
tkUnknown 165
tkUnknown 167
tkInteger 168
tkUnknown 170
tkDynArray 171
tkUnknown 173
tkUnknown 175
tkInteger 176
tkUnknown 178
tkUnknown 181
tkUnknown 183
tkInteger 184
tkUnknown 186
tkUnknown 189
tkUnknown 191
tkInteger 192
tkUnknown 194
tkDynArray 195
tkUnknown 197
tkUnknown 199
tkInteger 200
tkUnknown 202
tkUnknown 205
tkUnknown 207
tkInteger 208
tkUnknown 210
tkUnknown 213
tkUnknown 215
tkInteger 216
tkUnknown 218
tkDynArray 219
tkUnknown 220
tkUnknown 221
tkUnknown 223
tkInteger 224
tkUnknown 226
tkDynArray 227
tkUnknown 229
tkUnknown 231
tkLString ExeDescription-232
tkUnknown 234
tkDynArray 235
tkUnknown 237
tkUnknown 239
tkEnumeration 240
tkUnknown 242
tkDynArray 243
tkUnknown 245
tkUnknown 247
tkEnumeration 248
tkUnknown 250
tkUnknown 253
tkUnknown 255
tkEnumeration 256
tkUnknown 258
tkDynArray 259
tkUnknown 261
tkUnknown 263
tkInteger 264
tkUnknown 266
tkMethod 268
tkUnknown 269
tkUnknown 271
tkEnumeration 272
----------------------------------------------
[alias]  co = clone --recurse-submodules  up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
男 keymark (嬲) ▲▲▲△△ -
普通会员
2018/9/26 14:57:52
25楼: 脚本数据写(h)盘
{**********}
{          }
{       Pascal Script Source File          }
{       Run by RemObjects Pascal Script in CnWizards    }
{          }
{       Generated by CnPack IDE Wizards          }
{          }
{**********}

program IncProjBuild;

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ToolsAPI, CnCommon, CnWizUtils, DateUtils;

var
  Options: IOTAProjectOptions;
  Project: IOTAProject;
  MajorVer, MinorVer, ReleaseNo, BuildNo: Integer;
  T:TOTAOptionNameArray;
  i:integer;
  Lineas: TStringList;
begin
  Lineas:= TStringList.Create;
  Options := CnOtaGetActiveProjectOptions(nil);
  if Options = nil then Exit;
  Project := CnOtaGetCurrentProject;
  if Project = nil then Exit;

  if (Compiler = cnDelphi5) or (Compiler = cnBCB5) then
  begin
    if not QueryDlg('This function maybe can NOT run correctly in Delphi 5 or C++Builder 5 for an OTA Bug.'
      + #13#10#13#10 + 'Do you want to Continue?', False) then
      Exit;
  end;

  // Get the Versions
  MajorVer := Options.GetOptionValue('MajorVersion');
  MinorVer := Options.GetOptionValue('MinorVersion');
  ReleaseNo  := Options.GetOptionValue('Release');
  BuildNo := Options.GetOptionValue('Build');
  T := Options.GetOptionNames;
{
(tkUnknown, tkInteger, tkChar, tkEnumeration, tkFloat,
    tkString, tkSet, tkClass, tkMethod, tkWChar, tkLString, tkWString,
    tkVariant, tkArray, tkRecord, tkInterface, tkInt64, tkDynArray);
}

  for I := Low(T) to High(T) do
 begin
//  Lineas.Add(''+IntToStr(I));
  if T[I].Kind =tkUnknown then
  Lineas.Add('tkUnknown '+IntToStr(I));
  if T[I].Kind =tkInteger then
  Lineas.Add('tkInteger '+IntToStr(I));
  if T[I].Kind =tkChar then
  Lineas.Add('tkChar '+IntToStr(I));
  if T[I].Kind =tkEnumeration then
  Lineas.Add('tkEnumeration '+IntToStr(I));
  if T[I].Kind =tkFloat then
  Lineas.Add('tkFloat '+IntToStr(I));
  if T[I].Kind =tkString then
  Lineas.Add('tkString '+IntToStr(I));
  if T[I].Kind =tkSet then
  Lineas.Add('tkSet '+IntToStr(I));
  if T[I].Kind =tkClass then
  Lineas.Add('tkClass '+IntToStr(I));
  if T[I].Kind =tkMethod then
  Lineas.Add('tkMethod '+IntToStr(I));
  if T[I].Kind =tkWChar then
  Lineas.Add('tkWChar '+IntToStr(I));
  if T[I].Kind =tkLString then
  Lineas.Add('tkLString '+IntToStr(I));
  if T[I].Kind =tkWString then
  Lineas.Add('tkWString '+IntToStr(I));
  if T[I].Kind =tkVariant then
  Lineas.Add('tkVariant '+IntToStr(I));
  if T[I].Kind =tkArray then
  Lineas.Add('tkArray '+IntToStr(I));
  if T[I].Kind =tkRecord then
  Lineas.Add('tkRecord '+IntToStr(I));
  if T[I].Kind =tkInterface then
  Lineas.Add('tkInterface '+IntToStr(I));
  if T[I].Kind =tkInt64 then
  Lineas.Add('tkInt64 '+IntToStr(I));
  if T[I].Kind =tkDynArray then
  Lineas.Add('tkDynArray '+IntToStr(I));
//  ShowMessage(T[I].Name);
 end;
 Lineas.SaveToFile('H:\test.inc');

  if QueryDlg(Format('Current Project Version is %d.%d.%d.%d. Inc the Build Number?',
    [MajorVer, MinorVer, ReleaseNo, BuildNo]), False) then
  begin
    BuildNo := BuildNo + 1;
    CnOtaSetProjectOptionValue(Options, 'Build', Format('%d', [BuildNo]));
    CnOtaSetProjectOptionValue(Options, 'MajorVersion', Format('%d', [YearOf(Now)]));
    CnOtaSetProjectOptionValue(Options, 'MinorVersion', Format('%d', [MonthOf(Now)]));
    CnOtaSetProjectOptionValue(Options, 'Release', Format('%d', [DayOf(Now)]));
    CnOtaSetProjectOptionValue(Options, 'CompanyName', DateTimeToStr(Now));
    // Re-Get the Versions.
    MajorVer := Options.GetOptionValue('MajorVersion');
    MinorVer := Options.GetOptionValue('MinorVersion');
    ReleaseNo  := Options.GetOptionValue('Release');
    BuildNo := Options.GetOptionValue('Build');

    // Note: In Delphi 5/C++Builder 5, there's a BUG.
    // Nubers are correct here, but maybe unchanged in Project Options Dialog.
    InfoDlg(Format('Current Project Version is %d.%d.%d.%d.%s.',
      [MajorVer, MinorVer, ReleaseNo, BuildNo,DateTimeToStr(Now) ]));
  end;
end.
----------------------------------------------
[alias]  co = clone --recurse-submodules  up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
男 keymark (嬲) ▲▲▲△△ -
普通会员
2018/9/26 15:52:03
26楼: HostApplication
RunParams
EnvVars
SysVars
SymTabs
Launcher
UseLauncher
DebugCWD
RemoteHost
RemotePath
RemoteParams
RemoteLauncher
UseRemoteLauncher
RemoteCWD
RemoteDebug
LoadAllSymbols
LoadUnspecifiedSymbols
SymbolSearchPath
Align
BoolEval
Assertions
UnitDebugInfo
ImportedData
LongStrings
IOChecks
WriteableConst
LocalSymbols
TypeInfo
Optimization
OpenStrings
OverflowChecks
RangeChecks
StackChecks
TypedAddress
SafeDivide
VarStringChecks
StackFrames
ExtendedSyntax
ReferenceInfo
MinEnumSize
DebugInfo
RemoteSymbols
OutputObj
GenHpp
HintFlag
WarnFlag
StackSize
MaxStackSize
ResourceReserve
ImageBase
Target
MapFile
GenDRC
GenDOC
CompileName
Defines
SysDefines
OutputDir
UnitOutputDir
UnitDir
ObjDir
SrcDir
ResDir
NamespacePrefix
PkgDllDir
OptionsString
SOName
SOPrefix
SOPrefixDefined
SOSuffix
SOVersion
DynamicLoader
PasCodepage
PasPlatform
SignAssembly
DelaySign
KeyFile
KeyContainer
WarnSymbolDeprecated
WarnSymbolLibrary
WarnSymbolPlatform
WarnSymbolExperimental
WarnUnitLibrary
WarnUnitPlatform
WarnUnitDeprecated
WarnUnitExperimental
WarnHresultCompat
WarnHidingMember
WarnHiddenVirtual
WarnGarbage
WarnBoundsError
WarnZeroNilCompat
WarnStringConstTrunced
WarnForLoopVarVarpar
WarnTypedConstVarpar
WarnAsgToTypedConst
WarnCaseLabelRange
WarnForVariable
WarnConstructingAbstract
WarnComparisonFalse
WarnComparisonTrue
WarnComparingSignedUnsigned
WarnCombiningSignedUnsigned
WarnUnsupportedConstruct
WarnFileOpen
WarnFileOpenUnitsrc
WarnBadGlobalSymbol
WarnDuplicateCtorDtor
WarnInvalidDirective
WarnPackageNoLink
WarnPackagedThreadvar
WarnImplicitImport
WarnHppemitIgnored
WarnNoRetval
WarnUseBeforeDef
WarnForLoopVarUndef
WarnUnitNameMismatch
WarnNoCfgFileFound
WarnMessageDirective
WarnImplicitVariants
WarnUnicodeToLocale
WarnLocaleToUnicode
WarnImagebaseMultiple
WarnSuspiciousTypecast
WarnPrivatePropaccessor
WarnUnsafeType
WarnUnsafeCode
WarnUnsafeCast
WarnOptionTruncated
WarnWideCharReduced
WarnDuplicatesIgnored
WarnInitSeq
WarnLocalPInvoke
WarnXMLWhitespaceNotAllowed
WarnXMLUnknownEntity
WarnXMLInvalidNameStart
WarnXMLInvalidName
WarnXMLExpectedCharacter
WarnXMLCREFNoResolve
WarnXMLNoParm
WarnXMLNoMatchingParm
PkgDcpDir
UsePackages
Packages
UnitAliases
ExeDescription
ImplicitBuild
RuntimeOnly
DesigntimeOnly
DebugSourcePath
ImageDebugInfo
HeapSize
MaxHeapSize
LinkMaxErrors
LinkShowMangle
LinkGenImportLib
LinkGenLib
LinkNoStateFiles
LinkSubsysMajor
LinkSubsysMinor
LinkCaseSensitiveLink
LinkCalculateChecksum
LinkFastTLS
LinkReplaceResources
LinkUserMajor
LinkUserMinor
LinkImageComment
LinkDelayLoad
CppDebugInfo
LineNumbers
AutoRegVars
MergeDupStrs
EnableInLines
ShowWarnings
StdStackFrame
TreatEnumsAsInts
PCH
ShowInfoMsgs
ShowExtendedMsgs
GenDll
GenConsoleApp
GenPackage
GenStaticLibrary
ShowLinkerWarnings
LinkDebugVcl
InstructionSet
Alignment
CallingConvention
RegisterVars
Ansi
AutoDep
Underscore
PICCodeGen
FastFloat
PentiumFloat
NestedComments
MFCCompat
IdentLen
MemberPrecision
ForLoops
TwoChar
CodeModifiers
EnableRTTI
EnableExceptions
EHLocalInfo
EHDtor
EHPrologs
ZeroBaseClass
ZeroClassFunction
ForceCppCompile
MemberPointer
VTables
Templates
PchPath
PchStopAfter
UseDynamicRtl
MultiThreaded
ATLMultiUse
ATLDebugQI
ATLCoinitMultiThreaded
ATLAutoRegisterInproc
ATLDebugRefCount
ATLDebug
ATLThreading
CodeOpt
FloatSupport
IncludePath
LibPath
DebugPath
ReleasePath
LibraryList
TasmViaCppOpts
ClearPackageCache
ClearUnitCache
MarkModified
CaseSensitive
ExtendedDictionary
PurgeComment
PageSize
ListFile
TasmCrossReference
TasmSymbolTables
TasmGenerateListing
TasmIncludeConditionals
TasmIncludeErrors
TasmExpanded
TasmCaseCheckingOn
TasmAllCase
TasmDebugOn
TasmFullDebug
TasmWarningsOn
TasmWarningsLevel1
TasmHashTable
TasmPasses
TasmSymbolLength
TasmDirective
NoAskLibs
CGGlobalStackAccesses
CGThisPointer
CGInlinePointer
CGLinkCGLib
DefaultNamespace
AutoRegisterTLB
AutoGenImportAssembly
AutoIncBuildNum
Build
CodePage
IncludeVersionInfo
Keys
Locale
MajorVersion
MinorVersion
ModuleAttribs
Release
----------------------------------------------
[alias]  co = clone --recurse-submodules  up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
男 lwcvod (lwcvod) ★☆☆☆☆ -
普通会员
2018/9/27 21:16:43
27楼: 瞎掰的,搞不定 zhahongyi (如风) 能私聊下不
----------------------------------------------
Delphi
作者:
男 zhahongyi (如风) ★☆☆☆☆ -
普通会员
2018/9/28 8:56:33
28楼: Q 308612882
----------------------------------------------
-
作者:
男 keymark (嬲) ▲▲▲△△ -
普通会员
2018/9/28 8:56:43
28楼: 编译中文res
brcc32 -r -32 -l0804 ver.rc
----------------------------------------------
[alias]  co = clone --recurse-submodules  up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
男 keymark (嬲) ▲▲▲△△ -
普通会员
2018/9/28 9:04:17
29楼:
1 VERSIONINFO
FILEVERSION 1,0,0,0
PRODUCTVERSION 1,0,0,0
FILEOS 0x4
FILETYPE 0x2
{
BLOCK "StringFileInfo"
{
  BLOCK "040904E4"
  {
    VALUE "CompanyName", "CompanyName"
    VALUE "FileDescription", "Project1"
    VALUE "FileVersion", "1.0.0.0"
    VALUE "InternalName", "InternalName"
    VALUE "LegalCopyright", "LegalCopyright"
    VALUE "LegalTrademarks", "LegalTrademarks"
    VALUE "OriginalFilename", "OriginalFilename"
    VALUE "ProgramID", "com.embarcadero.Project1"
    VALUE "ProductName", "Project1"
    VALUE "ProductVersion", "1.0.0.0"
    VALUE "Comments", "Comments"
    VALUE "PrivateBuild", "PrivateBuild"
    VALUE "SpecialBuild", "SpecialBuild"
  }
}

BLOCK "VarFileInfo"
{
  VALUE "Translation", 0x0409 0x04E4  
}
}
10.2.2   64exe 数据全开. 导出工具 ResourceHacker
----------------------------------------------
[alias]  co = clone --recurse-submodules  up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
男 jonek (JoneK) ▲▲▲▲△ -
普通会员
2018/9/29 10:29:29
30楼: 10.2 解决了吗?  刚更新到cnpack 最新的也还是不行
----------------------------------------------
-
作者:
男 littlestone08 (littlestone08) ★☆☆☆☆ -
普通会员
2018/10/4 23:08:34
31楼: 学习
----------------------------------------------
我和我追逐的梦,擦肩而过
作者:
男 earthsbest (全能中间件) ▲▲▲▲△ -
普通会员
2018/10/11 19:22:21
32楼: 还没解决
此帖子包含附件:
PNG 图像
大小:93.6K
----------------------------------------------
Delphi4Linux Delphi三层/FireDAC 技术群:734515869 http://www.cnblogs.com/rtcmw
作者:
男 sensorwu (老吴) ▲▲▲△△ -
普通会员
2018/10/13 10:57:03
33楼: 以上大家讨论的方法,不是很了解,我把我知道的解决思路和大家说说,交流下。

关于版本号的问题,如果只是平时自己玩,随便编译几次,当然在delphi的IDE里边就可以设置楼主说的那种格式的版本号,但是,如果是正式的项目,需要自动维护版本,发行版本,那就最好使用FinalBuilder了,一切问题都可以解决,对于FinalBuilder解决版本号问题当然是最基本的问题了。比如我们发布一个项目,一般需要做如下的步骤(不同项目,不一定一样,会有增删,此处默认测试已经完成):
1. 设置版本号(可以自动计算设置)
    1.1 编译X32版本 (Delphi)
    1.2 编译X64版本  (Delphi)
2. 压缩编译好的EXE文件
   2.1 压缩X32版本   (压缩工具)
   2.2 压缩X64版本 (压缩工具)
3. 制作安装程序(一般使用Inno Setup,也可以使用其他工具)
4. 打包备份本次编译程序的所有源代码(一般压缩成RAR,需要全部备份,包括需要的控件等等)(WinRAR等打包工具)
5. 异地(不同服务器)备份本次发布的源程序以及对应目标版本 (FB)
6. FTP上传新目标执行版本(EXE,DLL)到客户能下载的网站  (FB)
7. 通知相关人员新版本已经发布

以上几步,如果人工操作,非常花费时间,考来考去,而且及其容易搞错,版本对应不上,相信大家真正实施过项目的可能遇到过这样的问题。那么这个痛点的终极解决之道就是FinalBuilder(当然可能还有其它类似的工具,这个工具是用Delphi开发的)。以上几步,如果使用FinalBuilder,短则不用一分钟,长则不过几分钟,只要FinalBuilder调试通过,不会出错,版本一致性没有问题。

在以前的delphi版本中是包含一个FinalBuilder的(功能有一定限制),现在delphi发布的版本好像是没有这个配套的FinalBuilder了。事实上FinalBuilder的功能非常强大,以上步骤只是使用很小的一部分,正如FinalBuilder这个名字“终极构建者”。

谨与大家探讨,不准确的或者不对的地方请多多谅解。
此帖子包含附件:
PNG 图像
大小:115.2K
----------------------------------------------
喜欢编程的一个DOS级程序员
作者:
男 ghslinux (ghslinux) ★☆☆☆☆ -
普通会员
2018/10/13 16:11:34
34楼: D7  这样设置了无效,也勾选了Include version information in project
此帖子包含附件:
PNG 图像
大小:10.3K
----------------------------------------------
-
作者:
男 ghslinux (ghslinux) ★☆☆☆☆ -
普通会员
2018/10/13 16:38:19
35楼: D7里亲测,用zhahongyi (如风) 19楼的代码完美搞定,谢谢啦。也谢谢全能
----------------------------------------------
-
作者:
男 cnpack (CnPack) ★☆☆☆☆ -
普通会员
2018/10/13 21:37:06
36楼: 关于CnPack通过Pascal Script脚本自动升级版本号的功能,以及版本扩展专家里升级版本号的功能,由于XE2以上的Delphi的Version Info不是单独存储在版本信息里,而是与ProjectConfiguration一块分开存储,导致CnPack写入版本号的功能失效,这个还在修复中。

关于脚本专家调用MessageBox函数乱码的问题,是因为D2009以上版本的Pascal Script有Bug,把PChar类型当作了PAnsiChar,而D2009以上版本的windows API均是走Unicode版本(也就是带W的),导致调用时脚本引擎把PAnsiChar的字符串传给了Unicode版本的API,从而乱码。
新的版本里,我们会把这部分API重新注册成A版本以规避此问题。而Pascal Script的PChar问题本身无解。
----------------------------------------------
欢迎使用CnPack IDE Wizards
http://www.cnpack.org/
作者:
男 earthsbest (全能中间件) ▲▲▲▲△ -
普通会员
2018/10/15 12:33:21
37楼: CnPack 已经更新了,欢迎下载每日构建版试用:http://cnpack.org/downbuilds.php?lang=zh-cn
----------------------------------------------
Delphi4Linux Delphi三层/FireDAC 技术群:734515869 http://www.cnblogs.com/rtcmw
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/10/15 12:52:26
38楼: 顶大神
getit 是不是也更新了呢。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 jonek (JoneK) ▲▲▲▲△ -
普通会员
2018/10/18 9:24:10
39楼: @cnpack 
Delphi 10.2 Version 25.0.26309.314
版本号增加还是有问题, 还是我哪里设置不对? 现在是Bulid会自动增加  但是FileVersion 不会改变
此帖子包含附件:
PNG 图像
大小:40.7K
----------------------------------------------
-
作者:
男 lwcvod (lwcvod) ★☆☆☆☆ -
普通会员
2018/10/18 10:10:44
40楼: 39楼,确实是还没有修正好, 要么自己写个工具对.dproj 写入版本号
----------------------------------------------
Delphi
作者:
男 cnpack (CnPack) ★☆☆☆☆ -
普通会员
2018/10/18 11:22:32
41楼: FileVersion本身是独立的,要修改还得再用脚本写一写。
最新每日构建版中新增的脚本例子VersionInfoKeys.pas里有访问这些值的例子。
----------------------------------------------
欢迎使用CnPack IDE Wizards
http://www.cnpack.org/
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/10/18 12:10:24
42楼: 顶楼上。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 lwcvod (lwcvod) ★☆☆☆☆ -
普通会员
2018/10/19 15:41:37
43楼: 刘总 新增的脚本例子VersionInfoKeys.pas里有访问这些值的例子,有没有写入的例子
----------------------------------------------
Delphi
作者:
男 earthsbest (全能中间件) ▲▲▲▲△ -
普通会员
2019/5/4 20:29:36
44楼: 今天刚发布的1.1.7版已经支持这个功能了。
此帖子包含附件:
PNG 图像
大小:93.7K
----------------------------------------------
Delphi4Linux Delphi三层/FireDAC 技术群:734515869 http://www.cnblogs.com/rtcmw
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行210.9375毫秒 RSS