<DIV>&nbsp;</DIV>
<DIV>Hi,</DIV>
<DIV>&nbsp;&nbsp; i try to delete features from a set of shape file, sometimes get error. I use this version of ogrshapelayer.cpp&nbsp; :&nbsp;<A href="http://trac.osgeo.org/gdal/changeset/10969">http://trac.osgeo.org/gdal/changeset/10969</A>&nbsp;. Delete feature in two ways would get different result:</DIV>
<DIV>(1)&nbsp; for(iFeat=0;iFeat&lt;nFeat;iFeat++)<BR>&nbsp; &nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;int cplE = pLayer-&gt;DeleteFeature(0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;if(cplE==CE_None)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;OGRShapeLayer* pShpLayer = (OGRShapeLayer*)pLayer;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cplE = pShpLayer-&gt;Repack();</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(cplE!=CE_None)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;printf("delete feature failed ŁĄ\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;}<BR>&nbsp; }</DIV>
<DIV>&nbsp;&nbsp; int nFeatRest = pLayer-&gt;GetFeatureCount();</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp; These codes could delete&nbsp;each feature with returned value CE_None, and&nbsp; at the end nFeatRest=0. But when ran to pShpLayer-&gt;Repack()&nbsp; second, the error occurs: "Failure writing DBF record 0", it jumped untill all features were deleted.</DIV>
<DIV>&nbsp;</DIV>
<DIV>(2)&nbsp;&nbsp;for(iFeat=nFeat-1;iFeat&gt;=0;iFeat--)<BR>&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;int cplE = pLayer-&gt;DeleteFeature(iFeat);</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp; if(cplE==CE_None)<BR>&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;OGRShapeLayer* pShpLayer = (OGRShapeLayer*)pLayer;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cplE = pShpLayer-&gt;Repack();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(cplE!=CE_None)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("delete feature failed ŁĄ\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;}</DIV>
<DIV>&nbsp;&nbsp;&nbsp; int nFeatRest = pLayer-&gt;GetFeatureCount();</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp; These codes could delete&nbsp;each feature with returned value CE_None, but at the end nFeatRest&gt;0 and nFeatRest&lt;nFeat,&nbsp;some features were NOT deleted yet!&nbsp;&nbsp; Same as (1), when ran to pShpLayer-&gt;Repack()&nbsp; second, the error occurs: "Failure writing DBF record iFeat", it jumped untill all features were deleted.</DIV>
<DIV>&nbsp;&nbsp;&nbsp; Trace the error&nbsp; "Failure writing DBF record ..." into Repack():</DIV>
<DIV>&nbsp;&nbsp;&nbsp;/* -------------------------------------------------------------------- */<BR>&nbsp;&nbsp; /*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Build a list of records to be dropped.&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; */<BR>&nbsp;&nbsp; /* -------------------------------------------------------------------- */<BR>&nbsp;&nbsp;&nbsp;&nbsp;...</DIV>
<DIV>&nbsp;&nbsp;&nbsp; for( iShape = 0; iShape &lt; nTotalShapeCount; iShape++ )<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( DBFIsRecordDeleted( hDBF, iShape ) )//------------ERROR jumped ---------<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; panRecordsToDelete[nDeleteCount++] = iShape;<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; Why did this phenomena occurs? </DIV>
<DIV>&nbsp;&nbsp;&nbsp; Thank you.</DIV>
<DIV>&nbsp;&nbsp;&nbsp; </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>