alearner
路人甲
路人甲
  • 注册日期2006-09-11
  • 发帖数74
  • QQ
  • 铜币433枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1453回复:1

AO开发中的一些小技巧

楼主#
更多 发布于:2007-05-01 11:49
<P>AO开发中的一些小技巧</P>
<P>---------------------------------------------------------------------</P>
<P>开发中的一些小技巧:<BR>1.<BR>/////////<BR>根据feature 的oid 取得对应的feature<BR>Set pfeature = pFeatureClass.GetFeature(CStr(sOid))<BR>////////</P>
<P>Set pfeature = pFeatureClass.GetFeature(lOid)<BR>当不存在featureOID 为 lOid 时,会出错,改为通过函数处理,为了减少时间,也不采用featureclass.search等方法。<BR>这样成功就取得对应的feature,不然就返回nothing,虽然函数中会产生错误,但不会影响正常操作。<BR>Private Function get_FeatureByOid(pFcls As IFeatureClass, lOid As Long) As IFeature<BR>On Error GoTo EH<BR>Set get_FeatureByOid = Nothing<BR>Dim pfeature As IFeature<BR>If pFcls Is Nothing Then Exit Function<BR>If lOid < 0 Then Exit Function</P>
<P>If pFcls.HasOID Then<BR>Set pfeature = pFcls.GetFeature(lOid)<BR>Set get_FeatureByOid = pfeature<BR>End If<BR>EH:<BR>'<BR>End Function</P>
<P>2.取得指定字段名的值<BR>/////////<BR>NameString = pfeature.Value(pFeatureClass.FindField("XXXXXX"))<BR>/////////<BR>同样道理,当找不到字段名为 XXXXXX 的字段时,pfeatureclass.findfield("XXXXXX") 返回值为-1<BR>那么 pfeature.value(-1)当然会出错<BR>同样通过函数替换<BR>Public Function Get_FClsFldIdx(ByVal pFeatureCls As IFeatureClass, ByVal sFldName As String) As Long<BR>'if success then return a value bigger than -1,if not found,then return -1<BR>On Error GoTo EH<BR>Get_FClsFldIdx = pFeatureCls.FindField(sFldName)</P>
<P>Exit Function<BR>EH:<BR>'<BR>End Function<BR>使用时:<BR>...<BR>lFldIdx = m_MyLib.Get_FClsFldIdx(pFeatureClass, "XXXXXX")<BR>If lFldIdx = -1 Then Exit Function '不存在名称为"XXXXXX"的字段<BR>...<BR>Dim pfeature As IFeature<BR>Dim NameString As String</P>
<P>For i = 0 To pFeatureClass.FeatureCount(Nothing) - 1<BR>Set pfeature = get_FeatureByOid(pFeatureClass, CLng(i))<BR>If Not pfeature Is Nothing Then<BR>NameString = pfeature.Value(lFldIdx)<BR>....<BR>End If<BR>Next i<BR>...</P>
<P>以上两例是比较简单的例子,在ao在线帮助中也经常有一些会产生错误的隐患,AO只是示例用法,但用法是否合理,要在自已的开发实践中总结。<BR>这样,使用AO中提供的代码,有的人能调试通过,运行得很正常,则其他人有可能调试不通过。<BR>希望能对初学者有帮助?<BR></P>
喜欢0 评分0
whmwxhanshan123
路人甲
路人甲
  • 注册日期2006-06-17
  • 发帖数3108
  • QQ
  • 铜币6445枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2007-05-01 18:59
谢谢!
举报 回复(0) 喜欢(0)     评分
游客

返回顶部