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));   //这行报错%>****************************