今天发现一件诡异的事情,不管你们有没碰到,反正小弟我碰到了 XE6

今天发现一件诡异的事情,不管你们有没碰到,反正我碰到了 XE6
先贴代码:

  TIdIndexItem = class(TIdSortItem)    // TIdSortItem = class(TCollectionItem) 
  private
    FIsDirty: Boolean;
    FValueList: TList<TRecBuf>;
    FIndexList: TList<Integer>;  //   关键看这里,这个已经没用的了

    procedure SetIsDirty(Value: Boolean);
    procedure DeleteRecord(Buffer: TRecBuf);
    procedure UpdateRecord(Buffer: TRecBuf);
  protected
    procedure SetSortOptions(Value: TIdSortOptions); override;
    procedure Prepare;
    function GotoNearest(const Buffer: TRecBuf; out Index: Integer): Boolean;
    property IsDirty: Boolean read FIsDirty write SetIsDirty;
  public
    constructor Create(Collection: TCollection); override;
    destructor Destroy; override;
  end;


不要认为 DELPHI 的代码问题放到 BCB 来,有很大关系呢。

我编写这个代码是因为做一个组件,以前是用到 FIndexList 这个成员的,现在不需要了,就将他删除掉,结果在编译 BCB 项目用到这个组件时,在 Win32 环境下就编译失败,Win64  环境下就能编译成功。

所有路径选项都没问题的。

FIndexList 这个成员只好再加上了,重新编译组件(顺便在 Create / Destory 中去创建销毁,否则警告说FIndexList 没用到),但这个成员却没有在任何地方用到。

再编译 BCB 项目用到这个组件时,在 Win32 环境下就编译成功了。

试了 N 遍,结果就是要加上这样一个没用的成员 BCB 才是好用的。

同时也试了 Delphi ,没有 BCB 的问题。


------解决方案--------------------
说明XE6的编译器存在很多bug!包括前面有人提到64位编译的问题!
------解决方案--------------------
不管你信不信,反正我信了。

C++Builder XE系列到目前为止BUG还是很多的,期望EMB能把工作重心从打击盗版转移到改善自己产品上。
------解决方案--------------------
今天发现一件诡异的事情,不管你们有没碰到,反正小弟我碰到了 XE6
凑个热闹
------解决方案--------------------
那个delphi代码不知道重新编译了一下没有。
------解决方案--------------------
组件的需求列表有可能漏了一些包。

我用 XE4 ,WIN32  如果包需求列表少了一些包的话。buildAll 可以成功,但Make就会失败,添加所有要用到的bpi后就正常。
刚开始觉得XE系列不需要将所有需求包都手工加上,是进步了,但得到的结果却是不提示,但却可能link失败,而且不告诉你原因。

一直想要IDE有个查看项目涉及的bpl包列表的工具,这样方便决定引入哪些lib,包含哪些包,却没昐到,总要手工干这活。IDE自动添加的包可能不准确,导致错误。并且其默认策略是默认是在cbproj文件中将一大堆用不到的包及库也添加到工程中,而不是按需使用,这导致项目升级及分发共享时带来了一些问题,常要编辑cbproj文件。
特别是每次升级时。你看:哪 个组件不是每个版本一个项目文件,项目文件自动升级那是常出错的,常要手工编辑。

我还是 先用着XE4没安装XE6, 等。
------解决方案--------------------
WIN7+ XE3(UPDATE2)

  d:\program files\embarcadero\rad studio\10.0\bin\cgrc.exe -c65001 AutoMailServ.vrc -foAutoMailServ.res   也存在此問題.