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

sczyq 2014-05-12 04:15:00
先贴代码:

  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 的问题。

...全文
306 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
Pubstar 2014-05-18
  • 打赏
  • 举报
回复
今天才发现 http://www.cppfans.com/ 这个网站是版主整的, 10年前,就知道这个网站,也偶尔看看,下载那个串口包,一直没将版主与之对应。真是惭愧呀。
Pubstar 2014-05-18
  • 打赏
  • 举报
回复
版主 C++ Builder XE6 开发移动设备,前景怎么样?真的能达到宣传所说的多平台统一代码吗? 我是菜鸟,只是在BCB6上做了几个小工具,后来一直关注着BCB发展,但一直没用它做东西,一直在关注,现在说XE6能开发安卓和苹果,又不用学习JAVA,有点让人心动,如果真的达到宣传上效果,我建议版主在C++ Builder 栏目下增加移动开发子栏目,也许真的是未来的希望。
sczyq 2014-05-16
  • 打赏
  • 举报
回复
之所以说诡异,是因为这个成员赖着不能删除 同一个pas其他类的成员若不再需要时,则是可以删除的,就这个类非常奇怪。
sczyq 2014-05-16
  • 打赏
  • 举报
回复
我是 Win7x64 + XE6
Samrv.W 2014-05-16
  • 打赏
  • 举报
回复
WIN7+ XE3(UPDATE2) d:\program files\embarcadero\rad studio\10.0\bin\cgrc.exe -c65001 AutoMailServ.vrc -foAutoMailServ.res 也存在此問題.
勉励前行 2014-05-15
  • 打赏
  • 举报
回复
组件的需求列表有可能漏了一些包。 我用 XE4 ,WIN32 如果包需求列表少了一些包的话。buildAll 可以成功,但Make就会失败,添加所有要用到的bpi后就正常。 刚开始觉得XE系列不需要将所有需求包都手工加上,是进步了,但得到的结果却是不提示,但却可能link失败,而且不告诉你原因。 一直想要IDE有个查看项目涉及的bpl包列表的工具,这样方便决定引入哪些lib,包含哪些包,却没昐到,总要手工干这活。IDE自动添加的包可能不准确,导致错误。并且其默认策略是默认是在cbproj文件中将一大堆用不到的包及库也添加到工程中,而不是按需使用,这导致项目升级及分发共享时带来了一些问题,常要编辑cbproj文件。 特别是每次升级时。你看:哪 个组件不是每个版本一个项目文件,项目文件自动升级那是常出错的,常要手工编辑。 我还是 先用着XE4没安装XE6, 等。
缘中人 2014-05-15
  • 打赏
  • 举报
回复
xe6的c++builder代码提示,头文件多了还是很慢啊
sczyq 2014-05-15
  • 打赏
  • 举报
回复
漏包的情况,基本是不在在的。 组件内其他类也有 TList<Integer> 的成员 只不过是我列出的这个类,因为不再需要了,所以删除了,因此在 BCB/Win32 项目Like就出问题了,而 BCB/Win64 , Delphi/Any 都是没有问题的。 如果漏包的话,基本是组件编译就不会成功。
我不懂电脑 2014-05-14
  • 打赏
  • 举报
回复
那个delphi代码不知道重新编译了一下没有。
sczyq 2014-05-14
  • 打赏
  • 举报
回复
引用 8 楼 songhtao 的回复:
那个delphi代码不知道重新编译了一下没有。
FIndexList 这个成员每次加上或删除后,当然要先重新编译组件,再编译BCB项目。
  • 打赏
  • 举报
回复
凑个热闹
过客猫2022 2014-05-12
  • 打赏
  • 举报
回复
引用 5 楼 ccrun 的回复:
很早就把编程当兴趣了。这年头软件行业发展太快,跟不上脚步了,如果还准备做这一行,尽早转移动开发才是王道。
搞cocos2dx吧!用XE6开发手机应用,怕是还有很多问题
ccrun.com 2014-05-12
  • 打赏
  • 举报
回复
很早就把编程当兴趣了。这年头软件行业发展太快,跟不上脚步了,如果还准备做这一行,尽早转移动开发才是王道。
过客猫2022 2014-05-12
  • 打赏
  • 举报
回复
引用 3 楼 ccrun 的回复:
不管你信不信,反正我信了。 C++Builder XE系列到目前为止BUG还是很多的,期望EMB能把工作重心从打击盗版转移到改善自己产品上。
是啊,现在搞的老妖做这个版主,都快成光杆司令了!
ccrun.com 2014-05-12
  • 打赏
  • 举报
回复
不管你信不信,反正我信了。 C++Builder XE系列到目前为止BUG还是很多的,期望EMB能把工作重心从打击盗版转移到改善自己产品上。
过客猫2022 2014-05-12
  • 打赏
  • 举报
回复
说明XE6的编译器存在很多bug!包括前面有人提到64位编译的问题!
sczyq 2014-05-12
  • 打赏
  • 举报
回复
编译出错信息,注意其他工程也是一样的。 Checking project dependencies... Building TestDBClient.cbproj (Debug, Win32) bcc32 command line for "TestDBClient.cpp" c:\program files (x86)\embarcadero\studio\14.0\bin\bcc32.exe -D_DEBUG -DUSEPACKAGES -n.\Win32\Debug -I"c:\program files (x86)\embarcadero\studio\14.0\include";"c:\program files (x86)\embarcadero\studio\14.0\include\dinkumware";"c:\program files (x86)\embarcadero\studio\14.0\include\windows\crtl";"c:\program files (x86)\embarcadero\studio\14.0\include\windows\sdk";"c:\program files (x86)\embarcadero\studio\14.0\include\windows\rtl";"c:\program files (x86)\embarcadero\studio\14.0\include\windows\vcl";"c:\program files (x86)\embarcadero\studio\14.0\include\windows\Ehlib";"c:\program files (x86)\embarcadero\studio\14.0\include\windows\DevExpress";"C:\Program Files (x86)\Raize\CS5\Lib\RS-XE6\Win32";C:\Users\Public\Documents\Embarcadero\Studio\14.0\hpp -y -Q -k -r- -c -tR -tM -tU -tW -C8 -o.\Win32\Debug\TestDBClient.obj -w-par -Od -v -vi- -H=.\Win32\Debug\TestDBClient.pch -H TestDBClient.cpp bcc32 command line for "TeatUnit.cpp" c:\program files (x86)\embarcadero\studio\14.0\bin\bcc32.exe -D_DEBUG -DUSEPACKAGES -n.\Win32\Debug -I"c:\program files (x86)\embarcadero\studio\14.0\include";"c:\program files (x86)\embarcadero\studio\14.0\include\dinkumware";"c:\program files (x86)\embarcadero\studio\14.0\include\windows\crtl";"c:\program files (x86)\embarcadero\studio\14.0\include\windows\sdk";"c:\program files (x86)\embarcadero\studio\14.0\include\windows\rtl";"c:\program files (x86)\embarcadero\studio\14.0\include\windows\vcl";"c:\program files (x86)\embarcadero\studio\14.0\include\windows\Ehlib";"c:\program files (x86)\embarcadero\studio\14.0\include\windows\DevExpress";"C:\Program Files (x86)\Raize\CS5\Lib\RS-XE6\Win32";C:\Users\Public\Documents\Embarcadero\Studio\14.0\hpp -y -Q -k -r- -c -tR -tM -tU -tW -C8 -o.\Win32\Debug\TeatUnit.obj -w-par -Od -v -vi- -H=.\Win32\Debug\TestDBClient.pch -H TeatUnit.cpp brcc32 command line for "TestDBClient.vrc" c:\program files (x86)\embarcadero\studio\14.0\bin\cgrc.exe -c65001 TestDBClient.vrc -foTestDBClient.res ilink32 command line c:\program files (x86)\embarcadero\studio\14.0\bin\ilink32.exe -G8 -L.\Win32\Debug;"c:\program files (x86)\embarcadero\studio\14.0\lib\win32\release"; "c:\program files (x86)\embarcadero\studio\14.0\lib\Win32\debug";"c:\program files (x86)\embarcadero\studio\14.0\lib\Win32\debug";"c:\program files (x86)\embarcadero\studio\14.0\Source\Ehlib";"c:\program files (x86)\embarcadero\studio\14.0\lib\win32\release";"c:\program files (x86)\embarcadero\studio\14.0\lib\win32\release\psdk";"c:\program files (x86)\embarcadero\studio\14.0\lib\win32\release\Ehlib";"c:\program files (x86)\embarcadero\studio\14.0\lib\win32\release\DevExpress";"C:\Program Files (x86)\Raize\CS5\Lib\RS-XE6\Win32"; C:\Users\Public\Documents\Embarcadero\Studio\14.0\DCP;"c:\program files (x86)\embarcadero\studio\14.0\lib\Win32\Debug" -j.\Win32\Debug;"c:\program files (x86)\embarcadero\studio\14.0\lib\win32\release";"c:\program files (x86)\embarcadero\studio\14.0\lib\Win32\debug";"c:\program files (x86)\embarcadero\studio\14.0\lib\Win32\debug";"c:\program files (x86)\embarcadero\studio\14.0\Source\Ehlib";"c:\program files (x86)\embarcadero\studio\14.0\lib\win32\release";"c:\program files (x86)\embarcadero\studio\14.0\lib\win32\release\psdk";"c:\program files (x86)\embarcadero\studio\14.0\lib\win32\release\Ehlib";"c:\program files (x86)\embarcadero\studio\14.0\lib\win32\release\DevExpress";"C:\Program Files (x86)\Raize\CS5\Lib\RS-XE6\Win32";C:\Users\Public\Documents\Embarcadero\Studio\14.0\DCP;"c:\program files (x86)\embarcadero\studio\14.0\lib\Win32\Debug" -l.\Win32\Debug -v -GA"C:\Users\ADMINI~1\AppData\Local\Temp\vfs7EE0.tmp"="D:\RAD\XE6\TCPDB\TeatUnit.dfm" -aa -V5.0 -Tpe c0w32w rtl.bpi vcl.bpi dbrtl.bpi IndySystem.bpi IndyCore.bpi vclimg.bpi vcldb.bpi IndyDB.bpi memmgr.lib sysinit.obj .\Win32\Debug\TestDBClient.obj .\Win32\Debug\TeatUnit.obj , .\Win32\Debug\TestDBClient.exe , .\Win32\Debug\TestDBClient.map , EhLib.lib import32.lib cp32mti.lib , , TestDBClient.res [ILINK32 Warning] Warning: CODE : 0x0000014f / 0x01000000 [ILINK32 Warning] Warning: DATA : 0x000000c7 / 0x01000000 [ILINK32 Warning] Warning: DEBSYM : 0x0000000e / 0x01000000 [ILINK32 Warning] Warning: Extdef flags : 0x00000021 / 0x00004000 [ILINK32 Warning] Warning: Extdefs : 0x00000084 / 0x00004000 [ILINK32 Warning] Warning: Import symbols : 0x00000000 / 0x00100000 [ILINK32 Warning] Warning: OBJ symbols : 0x00000b60 / 0x00400000 [ILINK32 Warning] Warning: Public GSX : 0x00003250 / 0x000c0000 [ILINK32 Warning] Warning: Publics : 0x0001c4d0 / 0x000c0000 [ILINK32 Warning] Warning: SegRelocs : 0x00000460 / 0x00800000 [ILINK32 Warning] Warning: StringBlock : 0x00000024 / 0x01000000 [ILINK32 Warning] Warning: Virdefs : 0x00000004 / 0x00020000 [ILINK32 Warning] Warning: D:/RAD/XE6/TCPDB/Win32/Debug/TestDBClient.ilc: 0x00010000 / 0x08000000 [ILINK32 Warning] Warning: D:/RAD/XE6/TCPDB/Win32/Debug/TestDBClient.ild: 0x00010000 / 0x08000000 [ILINK32 Warning] Warning: D:/RAD/XE6/TCPDB/Win32/Debug/TestDBClient.ilf: 0x00020000 / 0x0a000000 [ILINK32 Warning] Warning: D:/RAD/XE6/TCPDB/Win32/Debug/TestDBClient.ils: 0x003b0000 / 0x08000000 [ILINK32 Warning] Warning: D:/RAD/XE6/TCPDB/Win32/Debug/TestDBClient.tds: 0x00010000 / 0x09400000 [ILINK32 Warning] Warning: Extdef flags : 0x00000000 / 0x00004000 [ILINK32 Warning] Warning: Extdefs : 0x00000000 / 0x00004000 [ILINK32 Warning] Warning: Import symbols : 0x00000000 / 0x00100000 [ILINK32 Warning] Warning: OBJ symbols : 0x00000000 / 0x00400000 [ILINK32 Warning] Warning: Public GSX : 0x000008f8 / 0x000c0000 [ILINK32 Warning] Warning: Publics : 0x000050b8 / 0x000c0000 [ILINK32 Warning] Warning: StringBlock : 0x0000000e / 0x01000000 [ILINK32 Warning] Warning: Virdefs : 0x00000000 / 0x00020000 [ILINK32 Warning] Warning: unknown heap name : 0x08000000 / 0x08000000 [ILINK32 Warning] Warning: Error detected (LIB265) [ILINK32 Warning] Warning: Unable to perform incremental link - performing full link... [ILINK32 Warning] Warning: CODE : 0x0000014f / 0x01000000 [ILINK32 Warning] Warning: D:/RAD/XE6/TCPDB/Win32/Debug/TestDBClient.ilc: 0x00010000 / 0x08000000 [ILINK32 Warning] Warning: D:/RAD/XE6/TCPDB/Win32/Debug/TestDBClient.ild: 0x00010000 / 0x08000000 [ILINK32 Warning] Warning: D:/RAD/XE6/TCPDB/Win32/Debug/TestDBClient.ilf: 0x00020000 / 0x0a000000 [ILINK32 Warning] Warning: D:/RAD/XE6/TCPDB/Win32/Debug/TestDBClient.ils: 0x003b0000 / 0x08000000 [ILINK32 Warning] Warning: D:/RAD/XE6/TCPDB/Win32/Debug/TestDBClient.tds: 0x00010000 / 0x09400000 [ILINK32 Warning] Warning: DATA : 0x000000c7 / 0x01000000 [ILINK32 Warning] Warning: DEBSYM : 0x0000000e / 0x01000000 [ILINK32 Warning] Warning: Extdef flags : 0x00000021 / 0x00004000 [ILINK32 Warning] Warning: Extdefs : 0x00000084 / 0x00004000 [ILINK32 Warning] Warning: Import symbols : 0x00000000 / 0x00100000 [ILINK32 Warning] Warning: OBJ symbols : 0x00000b60 / 0x00400000 [ILINK32 Warning] Warning: Public GSX : 0x00003250 / 0x000c0000 [ILINK32 Warning] Warning: Publics : 0x0001c4d0 / 0x000c0000 [ILINK32 Warning] Warning: SegRelocs : 0x00000460 / 0x00800000 [ILINK32 Warning] Warning: StringBlock : 0x00000024 / 0x01000000 [ILINK32 Warning] Warning: Virdefs : 0x00000004 / 0x00020000 [ILINK32 Warning] Warning: unknown heap name : 0x08000000 / 0x08000000 [ILINK32 Warning] Warning: D:/RAD/XE6/TCPDB/Win32/Debug/TestDBClient.ilc: 0x00010000 / 0x08000000 [ILINK32 Warning] Warning: D:/RAD/XE6/TCPDB/Win32/Debug/TestDBClient.ild: 0x00010000 / 0x08000000 [ILINK32 Warning] Warning: D:/RAD/XE6/TCPDB/Win32/Debug/TestDBClient.ilf: 0x00020000 / 0x0a000000 [ILINK32 Warning] Warning: D:/RAD/XE6/TCPDB/Win32/Debug/TestDBClient.ils: 0x003b0000 / 0x08000000 [ILINK32 Warning] Warning: D:/RAD/XE6/TCPDB/Win32/Debug/TestDBClient.tds: 0x00010000 / 0x09400000 [ILINK32 Warning] Warning: Extdef flags : 0x00000000 / 0x00004000 [ILINK32 Warning] Warning: Extdefs : 0x00000000 / 0x00004000 [ILINK32 Warning] Warning: Import symbols : 0x00000000 / 0x00100000 [ILINK32 Warning] Warning: OBJ symbols : 0x00000000 / 0x00400000 [ILINK32 Warning] Warning: Public GSX : 0x000008f8 / 0x000c0000 [ILINK32 Warning] Warning: Publics : 0x000050b8 / 0x000c0000 [ILINK32 Warning] Warning: StringBlock : 0x0000000e / 0x01000000 [ILINK32 Warning] Warning: Virdefs : 0x00000000 / 0x00020000 [ILINK32 Warning] Warning: unknown heap name : 0x08000000 / 0x08000000 [ILINK32 Warning] Warning: Error detected (LIB265) [ILINK32 Error] Error: Unable to perform link Failed Elapsed time: 00:00:01.6

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧