ATL编写组件时,编译通过,调用时为什么会有这样的问题?(急求答案)
ATL编写组件时,编译通过,调用时为什么会有这样的问题?
在一个接口函数(就是编译成*.dll后可供ASP调用的函数)中是这样写的:
STDMETHODIMP CItem::SetSize(int Width, int Height, int *Result)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())
VARIANT* pValue = NULL;
CComVariant var = m_varValue;
var.Detach(pValue); //这一句有问题。
// BYTE *buf = NULL;
// buf = (BYTE *)pValue;
*Result = Width + Height;
return S_OK;
}
只要我加入var.Detach(pValue);这一句,就有问题,去掉后,一切正常。
其中m_varValue是CComVariant类型的变量,存储了二进制数据,通常是一个上传的文件的数据。
并且不管加不加var.Detach(pValue)这句,编译都能够通过。
请问我在这函数里想将m_varValue调到BYTE *buf中对数据进行处理,应该如何做?
ASP(使用JS语法)调用时报的错误如下:
****************************
Microsoft VBScript 编译器错误 错误 '800a03f6'
缺少 'End'
/iisHelp/common/500-100.asp,行242
Microsoft JScript 运行时错误 错误 '800a01fb'
出现一个意外错误
/epicn/ASPUploader Samples/sample1.asp,行9
****************************
第9行正是执行那个函数的代码,在第9行前执行其它函数是正常的。
JS代码如下:
****************************
<%@ LANGUAGE=JScript%>
<%
Response.Buffer = true;
var form = Server.CreateObject("MyRequest.Form");
form.Init();
var item = form.Item("file1").Item(1);
Response.Write (item.SetSize(223,44)); //这行报错
%>
****************************
问题点数:10、回复次数:4Top
1 楼skyron(我编程,我存在)回复于 2003-08-01 10:45:25 得分 5
你的程序有问题,不能那样定义和初始化
VARIANT* pValue = new VARIANT;
VariantInit(pValue);
CComVariant var = m_varValue;
var.Detach(pValue);
Top
2 楼w5meng(wingfancy)回复于 2003-08-01 11:02:19 得分 0
可是如何将其转换为BYTE *buf呢?Top
3 楼skyron(我编程,我存在)回复于 2003-08-01 13:08:00 得分 3
pValue->vt == ?Top
4 楼rice(rice)回复于 2003-08-01 13:21:11 得分 2
_ASSERTE( VT_BYREF|VT_UI1 == pValue );
buf = pValue->pbVal;Top



