|
阅读:2857回复:13
如何获得第i个字段的值(vc+mo)
<P>请高手指点。。。。。能否详细解释一下VARIANT类型的各个成员怎么用。。。</P>
<P>小弟非常感激。。。。。。。。。</P> <P>CMoRecordset selectedRecord(ipCurLayer.SearchByDistance(mapPt, tolerance, TEXT("")));// ipCurLayer是当前层</P> <P>selectedRecord.MoveFirst();</P> <P> CMoFields fields(selectedRecord.GetFields()); CMoField shapeField(fields.Item(COleVariant((short)3)));//为什么这样不能得到第3个字段呢?</P> <P>//CMoField shapeField(fields.Item(COleVariant(TEXT("特征名称"))));而这样确可以。。。。。 CMoPolygon shape; CString str; int i; for(i =0; i<selectedRecord.GetCount();i++) { str = shapeField.GetValueAsString(); MessageBox(str); selectedRecord.MoveNext(); }</P> |
|
|
1楼#
发布于:2004-09-13 08:45
VARIANT可以存放各种类型数据,具体请查MSDN.
|
|
|
|
2楼#
发布于:2004-09-15 15:07
楼上兄弟能说清楚点吗?我试过variant还是不行,不知道 错在那里....
|
|
|
3楼#
发布于:2004-09-15 15:44
<P>selectedRecord.Eof要检测是否有记录。</P><P>CMoField shapeField(fields.Item(COleVariant((short)3)));//为什么这样不能得到第3个字段呢?</P><P> VARIANT indexlayer;
VariantInit(;indexlayer); indexlayer.vt = VT_I4; indexlayer.lVal = 3; </P><P>CMoField shapeField(fields.Item(indexlayer))就OK! </P> |
|
|
|
4楼#
发布于:2004-09-17 16:14
<img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" />
|
|
|
5楼#
发布于:2004-09-19 16:15
<P>楼主用</P><P>VARIANT indexlayer;
VariantInit(;indexlayer); indexlayer.vt = VT_I4; indexlayer.lVal = 3; </P><P>CMoField shapeField(fields.Item(indexlayer))</P><P>这种方法成功了吗?我在下边填了一句</P><P>CString str=shapeField.GetName();</P><P>怎么str总是空的?</P> |
|
|
6楼#
发布于:2004-09-19 16:44
<P>不要用 COleVariant 用 CCOMVariant </P><P>VARIANT 类型你可以参考 COM 技术内幕一书,里面有较为详细的解释,其实最好的方法是参考 MSDN 。</P><P>一般情况下,应用VC+MO通常不要需要太深入的理解 VARIANT 。因为只是搭桥应用一下,而不是深入应用。应用时用 CComVariant 包一下就可以了。</P>
|
|
|
|
7楼#
发布于:2004-09-20 11:38
<P>请楼上的看一下,象下边这样用可以吗?</P><P>CMoField shapeField</P><P>for(int i=0;i<fields.GetCount();i++)</P><P> shapeField=fields.Item(CComVariant(i));</P><P>为什么编译时说error C2065: 'CComVariant' : undeclared identifier</P><P>多谢!</P>
|
|
|
8楼#
发布于:2004-09-20 15:36
最好用VARIANT,例子里都是这样用的。
|
|
|
|
9楼#
发布于:2004-09-20 17:41
<P>VARIANT我也用过,我是这样用的</P><P>VARIANT va;</P><P>VariantInit(;va);</P><P>va.vt = VT_I4;</P><P>for(int i=0;i<fields.GetCount();i++)</P><P>{</P><P> va.lVal = i; </P><P> shapeField=fields.Item(COleVariant(i));</P><P> CString str=shapeField.GetName();</P><P>}</P><P>str总是为空。据说CMoField不能在CMoFields中根据索引获得啊。</P>
|
|
上一页
下一页