在用ATL编写dephi调用的COM组件时遇到一些问题。

luofeitarget 2004-04-06 09:55:33
我试着编写dephi可以调用的组件,组件编写完成,发现dephi无法调用,想问一下高手关于atl编程的几个问题:
1. 我编译时是否要选择Win32 Unicode Release Minidependency 这类Unicode 选项
2. 如果用 Unicode 编译我该如何修改下面的代码.

//inStr: 为输入的字符串
//long : 字符串长度
//outstr: 输出的字符串
//jia: true时:outstr = instr + '1'; false时:outstr = instr + '0';
STDMETHODIMP CDesmi::Setmi(VARIANT inStr, long insize, VARIANT *outStr, BOOL jia)
{

CComVariant varNum(inStr);
HRESULT hr = varNum.ChangeType(VT_BSTR);
if(FAILED(hr))
return(DISP_E_TYPEMISMATCH);
char *p = NULL;
int charsize = sizeof(char);
int malcsize = int(charsize*(insize+2));
p = (char *)malloc(malcsize);
memset(p, 0, malcsize);
USES_CONVERSION;
lstrcpy(p,OLE2T(varNum.bstrVal)); //在Unicode下编译出错

if (p==NULL)
return S_FALSE;
if (jia)
p[insize] = '1';
else
p[insize] = '0';

p[insize] = '\0';
CComBSTR outvar(p);
VariantInit(outStr);
outStr->vt = VT_BSTR;
outStr->bstrVal = outvar;

free(p);
return S_OK;

}
...全文
54 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ColderRain 2004-04-09
  • 打赏
  • 举报
回复
char换成TCHAR

p[insize] = '\0'; 改成p[insize] = _T('\0');就是所有字符串都要加上_T()

和字符操作相关的CRT函数都要换成
Generic-Text Routine Name 的函数。
ColderRain 2004-04-09
  • 打赏
  • 举报
回复
lstrcpy(p,OLE2T(varNum.bstrVal)); //在Unicode下编译出错

把lstrcpy换成_tcscpy.
luofeitarget 2004-04-09
  • 打赏
  • 举报
回复
还有人回答没?
wangweixing2000 2004-04-06
  • 打赏
  • 举报
回复
写成:
_bstr_t str(varNum.bstrVal,true);
char* p = (char*)str;
JosunScript 脚本组件是一个采用ATL技术编写的高效稳定的脚本解析器。 能让你的CS模式程序(Vc、VB、Delphi、BC等)轻松解析VbScript,JavaScript脚本语言。 大大增强你的程序逻辑处理的灵活性和程序的交互能力,轻松实现从BS系统提供的页面接口获取数据信息。 最大程度实现程序功能的免编译(只要修改脚本文件即可),为你的用户提供“热插拔”式的升级。 尤其适合于各种流程化的程序设计(工作流函数的操作、呼叫中心系统IVR流程化的设计等等)。 本控件使用简便,开发者可根据本文档提供的例子根据自己的实际需求在例子上稍作修改即可。 主要的功能有: 1.加载脚本文件 2.获取脚本中的函数列表 3.获取脚本中的全局变量列表 4.按变量名称 设置、获取 脚本文件里的全局变量值 5.直接执行 文本、变量 中设置的脚本代码 6.能获取文本脚本执行结束后脚本里面的变量返回值,返回给调用者,实现脚本技术与其他语言技术的交互. 7.按列表返回的函数、过程名称执行相应的函数、过程。自定义入口参数,并返回执行结果给调用者,实现脚本技术与其他语言技术的交互. 8.实现远程、本地 xml文件的解析,免去在程序内部编写复杂的xml操作类,尤其是像VB这样的程序, 可以大大节约开发间(本压缩包内的VB的例子就是最典型最简单的解析xml的例子)。 9.可以利用xmlhttp实现asp、jsp等页面的数据的存取解析,轻松访问第三方的数据 10.利用强大的VBScript脚本技术可以实现数据库接口,轻松将程序中的变量写入第三方的数据库中 如果您正在被流程设计中繁杂的逻辑判断、为第三方提供数据接口而烦恼,如果你想在您的产品中嵌入 功能强大、高度灵活的脚本功能增强您的产品的竞争力,JosunScript控件可以助您一臂之力。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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