为什么加入COM Object后,很多函数,比如StrToInt()不可用了?

常宁 2002-07-23 10:37:30
为什么加入COM Object后,很多函数,比如StrToInt()不可用了?
比如
String str="1234";
int abc=StrToInt(str);
提示String不能转换为char *
但是实际上函数StrToInt的输入参数就是String类型,而不是char *
有没有人知道为什么?如何解决
附带说一下,不是所有的程序都这样,有的时候会有,有的时候就没有,如果在一个新的程序中加入COM Object通常没问题,但是如果在一个以前写的程序中加入就会出现这样的怪事。
...全文
106 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
常宁 2002-07-26
  • 打赏
  • 举报
回复
to jians()
LPCWSTR应该是 长指针的 常量型 宽字节的 字符串
也就是 wchar * 而不是char * 所以似乎不对
常宁 2002-07-25
  • 打赏
  • 举报
回复
哦,我试试看
wltom 2002-07-25
  • 打赏
  • 举报
回复
Edit4->Text.Trim().ToInt();
jians 2002-07-25
  • 打赏
  • 举报
回复
LWSTDAPI_(int) StrToIntW(LPCWSTR lpSrc);

redpower: LPCWSTR 的ANSI版本就是 char* 啊,没错。不会有什么影响的,
只要你的程序能链接成功,就说明你的所有方法都已经找到实现体啦。而且
这些低层的函数只是为了满足不同调用的需要,功能是一样的。

diabloyj: 当然不是重载啦,只是两个不可能同时存在的函数而已;至于编译器提示的参数是AnsiString也很正常的,因为编译器使用的提示工具本来就不能聪明到区分你到底准备使用哪个define声明.
jians 2002-07-25
  • 打赏
  • 举报
回复
LWSTDAPI_(int) StrToIntW(LPCWSTR lpSrc);

redpower: LPCWSTR 的ANSI版本就是 char* 啊,没错。
diabloyj: 当然不是重载啦,只是两个不可能同时存在的函数而已;至于编译器提示的参数是AnsiString也很正常的,因为编译器使用的提示工具本来就不能聪明到区分你到底准备使用哪个define声明.


diabloyj 2002-07-25
  • 打赏
  • 举报
回复
迷惑 再看看
diabloyj 2002-07-25
  • 打赏
  • 举报
回复
需要再看看
常宁 2002-07-25
  • 打赏
  • 举报
回复
是啊,而且即使是这个地方,但是不该提示char *所以,我认为好像这不是根源。
diabloyj 2002-07-25
  • 打赏
  • 举报
回复
哦 加NO_SHLWAPI_STRFCNS是可以了!
是shlwapi.h这个头文件又重新申明了它。
#ifndef NO_SHLWAPI_STRFCNS
#define StrToInt StrToIntW
LWSTDAPI_(int) StrToIntW(LPCWSTR lpSrc);
#endif
这是不是重载呢?
但是如果说是“加入COM后引入某些头文件带有相同名字但参数不同的函数”这个原因的话。
在我打StrToInt()时鼠标置于括号内时编译器提示的参数应该是其他类型的参数而不是const Ansistring啊,但实际情况是显示const Ansistring?
常宁 2002-07-25
  • 打赏
  • 举报
回复
方法是好用,可以解决。
jians()
你说得那个编译条件是什么,能不能确认一下,另外能不能说清楚会有什么影响?
diabloyj 2002-07-24
  • 打赏
  • 举报
回复
换成oyxiaoyu0(小雨仔)的方法后编译通过。
可是为什么StrToInt()不能用在Com中呢?
diabloyj 2002-07-24
  • 打赏
  • 举报
回复
是啊 !
我也出现了这个问题
我写的一个ActiveXFrom中
这一句StrToInt(Edit4->Text);
编译器说E2034 Cannot convert 'AnsiString' to 'const char *'为什么?
jians 2002-07-24
  • 打赏
  • 举报
回复
这是因为加入COM后引入某些头文件带有相同名字但参数不同的函数,
你可以在BORLAND目录下搜索一下看哪些文件有该函数的说明,并且
这些函数会放在一些#ifdef XXXX..#else...#endif中,你可以看看
XXXX到底是什么,然后在project options中加入编译条件XXXX。
请试试再project options\Directories/conditions的conditions中
加入以下的其中一个,到底是哪个我不记得了:
WIN32_LEAN_AND_MEAN;L_ENDIAN;NO_SHLWAPI_STRFCNS
oyxiaoyu0 2002-07-24
  • 打赏
  • 举报
回复
这个问题我遇到过!我是这样解决的!
Day=Day+SaveTime.ToInt(); //COM中不支持StrToInt()函数
xiaoguoru 2002-07-24
  • 打赏
  • 举报
回复
加入了<vcl.h>头文件没有
piaorenqian 2002-07-24
  • 打赏
  • 举报
回复
各位高手,帮我看一下!
http://www.csdn.net/expert/topic/899/899138.xml?temp=.4145624
diabloyj 2002-07-24
  • 打赏
  • 举报
回复
我想在网页脚本中使用的COM对象最好的形式应该就是ActiveX了吧
diabloyj 2002-07-24
  • 打赏
  • 举报
回复
我想在网页脚本中使用的COM对象最好的形式应该就是ActiveX了吧
diabloyj 2002-07-24
  • 打赏
  • 举报
回复
我想在网页脚本中使用的COM对象最好的形式应该就是ActiveX了吧
gloom 2002-07-24
  • 打赏
  • 举报
回复
BCB中怎么做能在网页脚本中使用的COM对象?
我做的COM Object能在BCB,VB中使用,但用在VBS中会出错,为什么?
加载更多回复(3)

13,871

社区成员

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

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