varAddress=(*pRs)->GetCollect(_variant_t("address"));
varAddress.ChangeType(VT_BSTR);
strAddress=varAddress.bstrVal;
//
typedef struct tagVARIANT {
VARTYPE vt;
unsigned short wReserved1;
unsigned short wReserved2;
unsigned short wReserved3;
union {
Byte bVal; // VT_UI1.
Short iVal; // VT_I2.
long lVal; // VT_I4.
float fltVal; // VT_R4.
double dblVal; // VT_R8.
VARIANT_BOOL boolVal; // VT_BOOL.
SCODE scode; // VT_ERROR.
CY cyVal; // VT_CY.
DATE date; // VT_DATE.
BSTR bstrVal; // VT_BSTR.
DECIMAL FAR* pdecVal // VT_BYREF|VT_DECIMAL.
IUnknown FAR* punkVal; // VT_UNKNOWN.
IDispatch FAR* pdispVal; // VT_DISPATCH.
SAFEARRAY FAR* parray; // VT_ARRAY|*.
Byte FAR* pbVal; // VT_BYREF|VT_UI1.
short FAR* piVal; // VT_BYREF|VT_I2.
long FAR* plVal; // VT_BYREF|VT_I4.
float FAR* pfltVal; // VT_BYREF|VT_R4.
double FAR* pdblVal; // VT_BYREF|VT_R8.
VARIANT_BOOL FAR* pboolVal; // VT_BYREF|VT_BOOL.
SCODE FAR* pscode; // VT_BYREF|VT_ERROR.
CY FAR* pcyVal; // VT_BYREF|VT_CY.
DATE FAR* pdate; // VT_BYREF|VT_DATE.
BSTR FAR* pbstrVal; // VT_BYREF|VT_BSTR.
IUnknown FAR* FAR* ppunkVal; // VT_BYREF|VT_UNKNOWN.
IDispatch FAR* FAR* ppdispVal; // VT_BYREF|VT_DISPATCH.
SAFEARRAY FAR* FAR* pparray; // VT_ARRAY|*.
VARIANT FAR* pvarVal; // VT_BYREF|VT_VARIANT.
void FAR* byref; // Generic ByRef.
char cVal; // VT_I1.
unsigned short uiVal; // VT_UI2.
unsigned long ulVal; // VT_UI4.
int intVal; // VT_INT.
unsigned int uintVal; // VT_UINT.
char FAR * pcVal; // VT_BYREF|VT_I1.
unsigned short FAR * puiVal; // VT_BYREF|VT_UI2.
unsigned long FAR * pulVal; // VT_BYREF|VT_UI4.
int FAR * pintVal; // VT_BYREF|VT_INT.
unsigned int FAR * puintVal; //VT_BYREF|VT_UINT.
};
varAddress.ChangeType(VT_BSTR);
strAddress=varAddress.bstrVal;
//
typedef struct tagVARIANT {
VARTYPE vt;
unsigned short wReserved1;
unsigned short wReserved2;
unsigned short wReserved3;
union {
Byte bVal; // VT_UI1.
Short iVal; // VT_I2.
long lVal; // VT_I4.
float fltVal; // VT_R4.
double dblVal; // VT_R8.
VARIANT_BOOL boolVal; // VT_BOOL.
SCODE scode; // VT_ERROR.
CY cyVal; // VT_CY.
DATE date; // VT_DATE.
BSTR bstrVal; // VT_BSTR.
DECIMAL FAR* pdecVal // VT_BYREF|VT_DECIMAL.
IUnknown FAR* punkVal; // VT_UNKNOWN.
IDispatch FAR* pdispVal; // VT_DISPATCH.
SAFEARRAY FAR* parray; // VT_ARRAY|*.
Byte FAR* pbVal; // VT_BYREF|VT_UI1.
short FAR* piVal; // VT_BYREF|VT_I2.
long FAR* plVal; // VT_BYREF|VT_I4.
float FAR* pfltVal; // VT_BYREF|VT_R4.
double FAR* pdblVal; // VT_BYREF|VT_R8.
VARIANT_BOOL FAR* pboolVal; // VT_BYREF|VT_BOOL.
SCODE FAR* pscode; // VT_BYREF|VT_ERROR.
CY FAR* pcyVal; // VT_BYREF|VT_CY.
DATE FAR* pdate; // VT_BYREF|VT_DATE.
BSTR FAR* pbstrVal; // VT_BYREF|VT_BSTR.
IUnknown FAR* FAR* ppunkVal; // VT_BYREF|VT_UNKNOWN.
IDispatch FAR* FAR* ppdispVal; // VT_BYREF|VT_DISPATCH.
SAFEARRAY FAR* FAR* pparray; // VT_ARRAY|*.
VARIANT FAR* pvarVal; // VT_BYREF|VT_VARIANT.
void FAR* byref; // Generic ByRef.
char cVal; // VT_I1.
unsigned short uiVal; // VT_UI2.
unsigned long ulVal; // VT_UI4.
int intVal; // VT_INT.
unsigned int uintVal; // VT_UINT.
char FAR * pcVal; // VT_BYREF|VT_I1.
unsigned short FAR * puiVal; // VT_BYREF|VT_UI2.
unsigned long FAR * pulVal; // VT_BYREF|VT_UI4.
int FAR * pintVal; // VT_BYREF|VT_INT.
unsigned int FAR * puintVal; //VT_BYREF|VT_UINT.
};
解决方案 »
- 用 pCMainFrame->Create(NULL,_T("测试"),WS_OVERLAPPEDWINDOW,CFrameWnd::rectDefault,NULL);弹出子窗口后,怎样在子窗口中获取父窗口的句柄?
- 用ado连接access,如何将一个access文件的表全部复制到另一个access文件中?
- 用UDP传输文件怎样防止丢包?
- 我想读一个word文档,然后检测一下,在一个新的word里建几个索引,就 是超连接,连接到读的那个word文档,能实现吗
- vc中无microsoft ado data control,导致无法使用datagrid控件,在线求救
- 然后动态更换sql语句中的参数啊!
- 如何得到应用程序的toolbar句柄,并控制?
- 怎样和自己建立连接?
- 求<<WIN32 Programming>>电子书,有中文版吗。我下了书的源码。。。
- 关于写文件!在线等!!
- 遇到新情况
- 在编程中 如何调用默认邮件程序(outlook express)发送新邮件,并自动把指定的文件附加上去?
varAddress.ChangeType(VT_BSTR);
strAddress=varAddress.bstrVal;
中pRs是什么意思?varAddress的类型?strAddress的类型?请您详细解答一下。谢谢!
varAddress是VARIANT类型
strAddress是CString类型
(*pRs)->GetCollect(_variant_t("address"));//这个东东不用管了,主要是给varAddress赋了一个值.
而且VARIANT没有ChangeTyep这个函数呀?
再次请您解答,谢谢!
如果VARIANT varAddress;可以使用VariantChangeType(...);
一般varAddress = _variant_t(...);是可行的。
或者
varAddress.vt = VT_BSTR;
varAddress.bstrVal = str.AllocSysString();//str defined as CString
var1.vt=VT_I2;
var1.iVal=6;
var2.vt=VT_I2;
var2.iVal=10;
m_CCWGraphSensor.PlotXY(var1,var2);
执行后发现"Array Dimension mismatch"的错误,到底怎么回事?
谢谢!你有QQ吗?我在QQ上向您请教。
我的测试代码OK!
如下:
void CClientDlg::TestVar(VARIANT& var1)
{
VariantChangeType(&var1, &var1, 0, VT_BSTR);
CString str = var1.bstrVal;
AfxMessageBox(str);
}void CClientDlg::OnOK()
{
// TODO: Add your specialized code here and/or call the base class
VARIANT var;
var.vt = VT_I2;
var.iVal = 100;
TestVar(var);
//CDialog::OnOK();
}