BCB6一个奇怪的Bug!

CoderNO1 2002-07-03 09:19:18
程序中使用了excelapplication等excel组件,当程序使用debug模式下编译时,一切正常,但当处于release模式下时,程序出现,下面错误:[C++ Error] MyXLS.cpp(43): E2027 Must take address of a memory location,[C++ Error] MyXLS.cpp(80): E2451 Undefined symbol 'e'

错误的语句是类似这样的语句:(凡是try语句都出错!)
try{
for(int i=1;i<=col;i++)
{
String s=TVariant(xlsDS->xlsSheet->Cells->get_Item(TVariant(rowid),TVariant(i)));
vs.push_back(s);
}
return true;
}catch(Exception &e)
{
logserver.addlog(e.Message,logWarn);
close();

}
错误指的是这一句:
}catch(Exception &e)


在Release下,清除了所有的obj,tds,csm,然后build all都无法解决。
注这一个程序原是bcb5的项目。在使用excel组件以外的地方使用try语句是无问题的。

还有的是:在relase模式下,会报
[C++ Warning] utilcls.h(1149): W8027 Functions containing do are not expanded inline
这可是borland自家写的语句呀,指的是这一句:
operator long*()
{
_ASSERTE(vt!= VT_UNKNOWN);//warning定在这里
_ASSERTE(vt!= VT_DISPATCH);
_ASSERTE(vt!= (VT_UNKNOWN|VT_BYREF));
_ASSERTE(vt!= (VT_DISPATCH|VT_BYREF));

if (vt == (VT_UI4|VT_BYREF)) return (long*)V_UI4REF(this);
else if (vt == VT_UI4) return (long*)&(V_UI4(this));
return NULL;
}

环境:
bcb6+update1
...全文
175 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
钛哥 2002-08-26
  • 打赏
  • 举报
回复
真tnd隐蔽啊,难为cker找到这段话
//-- user supplied -----------------------------------------------------------
// If problems occur when compiling win32 structs, records, or
// unions, please define NO_WIN32_LEAN_AND_MEAN to force inclusion
// of Windows header files.

耙子 2002-08-24
  • 打赏
  • 举报
回复
bcb的这个shlobj.hpp 问题曾经迷惑了好多人,因为大家都没有看源代码的习惯,所以看不到前面那段声明。
呵呵,痛打bcb 50大板。
  • 打赏
  • 举报
回复
这个问题很久以前见过....
to juqiang(方枪枪(正在升级为惊艳一枪。。。):

这个问题应该作如下的解决:
#define NOWIN32_LEAN_AND_MEAN
#include <shlobj.hpp>
#include <vcl.h>

注意include 次序
为什么这么做,查看此文件便有答案...
CODERNO2 2002-08-24
  • 打赏
  • 举报
回复
我来帮你up!~
juqiang 2002-07-09
  • 打赏
  • 举报
回复
bcb的head file确实有问题,我认为是这样。比如我的SHBrowseForFolder,在bcb3下面好用,而在bcb5下面不能用。后来我发现我即使仅仅加入这么一句:

#include "shlobj.h"

也会出问题!
提示structure定义重复,后来我直接修改shlobj.h,把这些重复的去掉了,就好了。

不过,你的问题好像是代码的问题,呵呵!
CoderNO1 2002-07-08
  • 打赏
  • 举报
回复
up
CoderNO1 2002-07-07
  • 打赏
  • 举报
回复
用OLE吗?感觉没有用BCB提供的组件方便。我想,直接用BCB import Activex Control可能还好一点。不过Borland Type Library Exporter所生成的头文件BUG不少,自已打造一番也挺累人的。
daehappy 2002-07-07
  • 打赏
  • 举报
回复
up!gz!
CoderNO1 2002-07-05
  • 打赏
  • 举报
回复
在我写的代码中没有关于Debug和Release相关的宏定义,即是说我写的代码不会对Debug和Release进行区分。当然BCB的头文件是会区分的,因为我出的是编译错误,所也只会关心BCB的头文件,什么动态库呀之类的不管。这也说明BCB的头文件有问题,即BCB6有BUG。

还有什么好一点的说法?谁遇过类似的编译错误。Debug和Release运行不一致遇过不少,编译出错也是头一次。
wangxd 2002-07-05
  • 打赏
  • 举报
回复
我就不爱用bcb包装的office组件,不好。
佣工7001 2002-07-04
  • 打赏
  • 举报
回复
Debug和Release的程序包不一样,还是好好看看程序,可能那个隐藏错误没有发现
CoderNO1 2002-07-04
  • 打赏
  • 举报
回复
to tiger111222(vo) :
你的excle 组件调用的时候没有申明,头文件?
xlsDS、vs 的申明有错,或没有包含必要的头文件


如果声明有错的话,那么我就不可能在Debug模式下顺利完成编译,并运行没有错了。
钛哥 2002-07-04
  • 打赏
  • 举报
回复
你的excle 组件调用的时候没有申明,头文件?
xlsDS、vs 的申明有错,或没有包含必要的头文件
CoderNO1 2002-07-04
  • 打赏
  • 举报
回复
up
CoderNO1 2002-07-04
  • 打赏
  • 举报
回复
up again
fansses 2002-07-03
  • 打赏
  • 举报
回复
帮你up
CoderNO1 2002-07-03
  • 打赏
  • 举报
回复
up

13,825

社区成员

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

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