<DIV>&nbsp; Hi, Frank,thank you for reply. </DIV>
<DIV>&nbsp; I have posted the ticket&nbsp;with little experience here:</DIV>
<DIV>&nbsp; <A href="http://trac.osgeo.org/gdal/ticket/2531">http://trac.osgeo.org/gdal/ticket/2531</A>.</DIV>
<DIV>&nbsp; Attachment of this mail is the example project. Thank you for more help.</DIV>
<DIV style="FONT-SIZE: 12px; COLOR: #909090; FONT-FAMILY: Arial Narrow">------------------</DIV>
<DIV>
<DIV>To the world you're little, but to a person you're the world.</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Chen Xuexia</DIV></DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 12px; PADDING-BOTTOM: 2px; PADDING-TOP: 2px; FONT-FAMILY: Arial Narrow">------------------&nbsp;Original&nbsp;------------------</DIV>
<DIV style="FONT-SIZE: 12px">
<DIV id=menu_sender><B>From: </B>&nbsp;"Frank Warmerdam"&lt;warmerdam@pobox.com&gt;;</DIV>
<DIV><B>Date: </B>&nbsp;Fri, Aug 15, 2008 10:06 AM</DIV>
<DIV><B>To: </B>&nbsp;"wow"&lt;27949218@qq.com&gt;; </DIV>
<DIV><B>Cc: </B>&nbsp;"gdal-dev"&lt;gdal-dev@lists.osgeo.org&gt;; </DIV>
<DIV><B>Subject: </B>&nbsp;Re: [gdal-dev] deleting feature exceptions</DIV></DIV>
<DIV>&nbsp;</DIV>
<DIV style="FONT-WEIGHT: normal">Chen,<BR><BR>I'm surprised both approaches don't work smoothly.&nbsp; I'd suggest you boil<BR>down a minimum example of the problem, and file a bug ticket on it<BR>including the input data.<BR><BR>Best regards,<BR>FrankW<BR><BR>2008/8/14 wow &lt;27949218@qq.com&gt;:<BR>&gt;<BR>&gt; Hi,<BR>&gt;&nbsp;&nbsp;&nbsp; i try to delete features from a set of shape file, sometimes get error. I<BR>&gt; use this version of ogrshapelayer.cpp&nbsp; :<BR>&gt; http://trac.osgeo.org/gdal/changeset/10969 . Delete feature in two ways<BR>&gt; would get different result:<BR>&gt; (1)&nbsp; for(iFeat=0;iFeat&lt;nFeat;iFeat++)<BR>&gt;&nbsp;&nbsp;&nbsp; {<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int cplE = pLayer-&gt;DeleteFeature(0);<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(cplE==CE_None)<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OGRShapeLayer* pShpLayer = (OGRShapeLayer*)pLayer;<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cplE = pShpLayer-&gt;Repack();<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(cplE!=CE_None)<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("delete feature failed !\n");<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&gt;&nbsp;&nbsp; }<BR>&gt;&nbsp;&nbsp;&nbsp; int nFeatRest = pLayer-&gt;GetFeatureCount();<BR>&gt;<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp; These codes could delete each feature with returned value CE_None, and<BR>&gt; at the end nFeatRest=0. But when ran to pShpLayer-&gt;Repack()&nbsp; second, the<BR>&gt; error occurs: "Failure writing DBF record 0", it jumped untill all features<BR>&gt; were deleted.<BR>&gt;<BR>&gt; (2)&nbsp; for(iFeat=nFeat-1;iFeat&gt;=0;iFeat--)<BR>&gt;&nbsp; {<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int cplE = pLayer-&gt;DeleteFeature(iFeat);<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(cplE==CE_None)<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OGRShapeLayer* pShpLayer = (OGRShapeLayer*)pLayer;<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cplE = pShpLayer-&gt;Repack();<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(cplE!=CE_None)<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("delete feature failed !\n");<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&gt;&nbsp; }<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp; int nFeatRest = pLayer-&gt;GetFeatureCount();<BR>&gt;<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp; These codes could delete each feature with returned value CE_None, but<BR>&gt; at the end nFeatRest&gt;0 and nFeatRest&lt;nFeat, some features were NOT deleted<BR>&gt; yet!&nbsp;&nbsp; Same as (1), when ran to pShpLayer-&gt;Repack()&nbsp; second, the error<BR>&gt; occurs: "Failure writing DBF record iFeat", it jumped untill all features<BR>&gt; were deleted.<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Trace the error&nbsp; "Failure writing DBF record ..." into Repack():<BR>&gt;&nbsp;&nbsp;&nbsp; /* --------------------------------------------------------------------<BR>&gt; */<BR>&gt;&nbsp;&nbsp;&nbsp; /*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Build a list of records to be dropped.<BR>&gt; */<BR>&gt;&nbsp;&nbsp;&nbsp; /* --------------------------------------------------------------------<BR>&gt; */<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp; ...<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp; for( iShape = 0; iShape &lt; nTotalShapeCount; iShape++ )<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( DBFIsRecordDeleted( hDBF, iShape ) )//------------ERROR jumped<BR>&gt; ---------<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; panRecordsToDelete[nDeleteCount++] = iShape;<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Why did this phenomena occurs?<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Thank you.<BR>&gt;<BR>&gt; ------------------<BR>&gt; To the world you're little, but to a person you're the world.<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Chen Xuexia<BR>&gt; _______________________________________________<BR>&gt; gdal-dev mailing list<BR>&gt; gdal-dev@lists.osgeo.org<BR>&gt; http://lists.osgeo.org/mailman/listinfo/gdal-dev<BR>&gt;<BR><BR><BR><BR>-- <BR>---------------------------------------+--------------------------------------<BR>I set the clouds in motion - turn up | Frank Warmerdam, warmerdam@pobox.com<BR>light and sound - activate the windows | http://pobox.com/~warmerdam<BR>and watch the world go round - Rush | Geospatial Programmer for Rent<BR></DIV><div id=QQMailBigAttach style='font-size:12px;padding-top:60px;text-align:left;'><hr style='width:75%;color:#909090;' size='1px' align=left><span style='color:#909090;font-size:12px;display:block;'>以下文件通过QQ邮箱的中转站发给您。保存时间有限制,请及时提取。</span><span style='margin:5px 0 0 0;font-size:12px;display:block;'><span class='qqmailbgattach' style='font-weight:bold;' expiretime='1219389244' downloadlink='http://mail.qq.com/cgi-bin/exs_download?uin=27949218&svrid=240&fid=0005cdc7f9832359f9e4eb3efc621a7a0b6aed38b0648f15&temp=74cb36d4&k=87991e35a04ec67fda159d7b32331b39613965348d6133658e603632216137615d0b584c15165c523401180016145047&code=74cb36d4&s=email'>min-projV1.4.rar<SPAN style="FONT-WEIGHT: normal"> (2.92M)</SPAN> <WBR><WBR></span>[<a href='http://mail.qq.com/cgi-bin/exs_download?uin=27949218&svrid=240&fid=0005cdc7f9832359f9e4eb3efc621a7a0b6aed38b0648f15&temp=74cb36d4&k=87991e35a04ec67fda159d7b32331b39613965348d6133658e603632216137615d0b584c15165c523401180016145047&code=74cb36d4&s=email' target=_blank>下载</a>]&nbsp;&nbsp;<span style='color:#909090'>(有效时间到: 2008年8月22日 15:14)</span></span></div>