阅读:2587回复:7
AO开发中的一些小技巧(A)
<P>开发中的一些小技巧:
1. ///////// 根据feature 的oid 取得对应的feature Set pfeature = pFeatureClass.GetFeature(CStr(sOid)) ////////</P> <P> Set pfeature = pFeatureClass.GetFeature(lOid) 当不存在featureOID 为 lOid 时,会出错,改为通过函数处理,为了减少时间,也不采用featureclass.search等方法。 这样成功就取得对应的feature,不然就返回nothing,虽然函数中会产生错误,但不会影响正常操作。 Private Function get_FeatureByOid(pFcls As IFeatureClass, lOid As Long) As IFeature On Error GoTo EH Set get_FeatureByOid = Nothing Dim pfeature As IFeature If pFcls Is Nothing Then Exit Function If lOid < 0 Then Exit Function If pFcls.HasOID Then Set pfeature = pFcls.GetFeature(lOid) Set get_FeatureByOid = pfeature End If EH: ' End Function</P> <P>2.取得指定字段名的值 ///////// NameString = pfeature.Value(pFeatureClass.FindField("XXXXXX")) ///////// 同样道理,当找不到字段名为 XXXXXX 的字段时,pfeatureclass.findfield("XXXXXX") 返回值为-1 那么 pfeature.value(-1)当然会出错 同样通过函数替换 Public Function Get_FClsFldIdx(ByVal pFeatureCls As IFeatureClass, ByVal sFldName As String) As Long 'if success then return a value bigger than -1,if not found,then return -1 On Error GoTo EH Get_FClsFldIdx = pFeatureCls.FindField(sFldName) Exit Function EH: ' End Function 使用时: ... lFldIdx = m_MyLib.Get_FClsFldIdx(pFeatureClass, "XXXXXX") If lFldIdx = -1 Then Exit Function '不存在名称为"XXXXXX"的字段 ... Dim pfeature As IFeature Dim NameString As String For i = 0 To pFeatureClass.FeatureCount(Nothing) - 1 Set pfeature = get_FeatureByOid(pFeatureClass, CLng(i)) If Not pfeature Is Nothing Then NameString = pfeature.Value(lFldIdx) .... End If Next i ...</P> <P> 以上两例是比较简单的例子,在ao在线帮助中也经常有一些会产生错误的隐患,AO只是示例用法,但用法是否合理,要在自已的开发实践中总结。 这样,使用AO中提供的代码,有的人能调试通过,运行得很正常,则其他人有可能调试不通过。 希望能对初学者有帮助? </P> |
|
|
1楼#
发布于:2004-12-25 22:56
<img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em04.gif" /><img src="images/post/smile/dvbbs/em04.gif" /><img src="images/post/smile/dvbbs/em05.gif" /><img src="images/post/smile/dvbbs/em05.gif" />
|
|
|
2楼#
发布于:2004-08-04 16:44
<img src="images/post/smile/dvbbs/em01.gif" />
|
|
|
3楼#
发布于:2004-07-28 09:33
感谢他,我就是受益者!
|
|
4楼#
发布于:2004-07-28 09:20
等着出b,c,d<img src="images/post/smile/dvbbs/em04.gif" />
|
|
|
5楼#
发布于:2004-07-27 16:34
<img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em02.gif" />
|
|
6楼#
发布于:2004-07-27 14:50
好! <img src="images/post/smile/dvbbs/em07.gif" />
|
|
|
7楼#
发布于:2004-07-27 13:27
支持!
|
|
|