追风浪子
路人甲
路人甲
  • 注册日期2004-06-08
  • 发帖数166
  • QQ
  • 铜币782枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2854回复:13

如何获得第i个字段的值(vc+mo)

楼主#
更多 发布于:2004-09-11 22:00
<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>
喜欢0 评分0
lixaokui
路人甲
路人甲
  • 注册日期2003-12-25
  • 发帖数768
  • QQ28796446
  • 铜币27枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2004-09-13 08:45
VARIANT可以存放各种类型数据,具体请查MSDN.
西门吹血,有了鼓风机,就不用吹啦!
举报 回复(0) 喜欢(0)     评分
追风浪子
路人甲
路人甲
  • 注册日期2004-06-08
  • 发帖数166
  • QQ
  • 铜币782枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2004-09-15 15:07
楼上兄弟能说清楚点吗?我试过variant还是不行,不知道 错在那里....
举报 回复(0) 喜欢(0)     评分
lixaokui
路人甲
路人甲
  • 注册日期2003-12-25
  • 发帖数768
  • QQ28796446
  • 铜币27枚
  • 威望0点
  • 贡献值0点
  • 银元0个
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>
西门吹血,有了鼓风机,就不用吹啦!
举报 回复(0) 喜欢(0)     评分
追风浪子
路人甲
路人甲
  • 注册日期2004-06-08
  • 发帖数166
  • QQ
  • 铜币782枚
  • 威望0点
  • 贡献值0点
  • 银元0个
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" />
举报 回复(0) 喜欢(0)     评分
mao__mao_
路人甲
路人甲
  • 注册日期2004-09-19
  • 发帖数41
  • QQ
  • 铜币219枚
  • 威望0点
  • 贡献值0点
  • 银元0个
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>
举报 回复(0) 喜欢(0)     评分
袁绍伦
路人甲
路人甲
  • 注册日期2003-08-08
  • 发帖数654
  • QQ164646905
  • 铜币1336枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2004-09-19 16:44
<P>不要用 COleVariant  用 CCOMVariant </P><P>VARIANT 类型你可以参考  COM 技术内幕一书,里面有较为详细的解释,其实最好的方法是参考 MSDN 。</P><P>一般情况下,应用VC+MO通常不要需要太深入的理解 VARIANT 。因为只是搭桥应用一下,而不是深入应用。应用时用 CComVariant 包一下就可以了。</P>
愿意和大家交朋友! QQ:47559983 MSN:shaolun_yuan@hotmail.com eMail:shaolun-yuan@163.com
举报 回复(0) 喜欢(0)     评分
mao__mao_
路人甲
路人甲
  • 注册日期2004-09-19
  • 发帖数41
  • QQ
  • 铜币219枚
  • 威望0点
  • 贡献值0点
  • 银元0个
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>
举报 回复(0) 喜欢(0)     评分
lixaokui
路人甲
路人甲
  • 注册日期2003-12-25
  • 发帖数768
  • QQ28796446
  • 铜币27枚
  • 威望0点
  • 贡献值0点
  • 银元0个
8楼#
发布于:2004-09-20 15:36
最好用VARIANT,例子里都是这样用的。
西门吹血,有了鼓风机,就不用吹啦!
举报 回复(0) 喜欢(0)     评分
mao__mao_
路人甲
路人甲
  • 注册日期2004-09-19
  • 发帖数41
  • QQ
  • 铜币219枚
  • 威望0点
  • 贡献值0点
  • 银元0个
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>
举报 回复(0) 喜欢(0)     评分
上一页
游客

返回顶部