void CCad2vctDlg::ReadDxfLWPolyline(FILE *pFile)
{
char str1[500];
LineData *pCurLineData,*pPrevLineData;
while(! feof(pFile) && ! ferror(pFile))
{
fscanf(pFile,"%s\n",str1);
if(strcmp(str1,"LWPOLYLINE")==0)
//if(strnicmp("LWPOLYLINE",str1,10)!=0)
{
pCurLineData=new LineData[sizeof(LineData)];
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",pCurLineData->AimCode); pCurLineData->FeatureCode="C20";
pCurLineData->LineMark=1; fscanf(pFile,"%s\n",str1);
if(strcmp(str1,"102")==0)
//if(strnicmp("102",str1,3)!=0)
{
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
} fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",pCurLineData->LayerName ); fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
//fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%d\n",&pCurLineData->PointNum); Point *LnPnt;
LnPnt=new Point[pCurLineData->PointNum];
pCurLineData->pMemberPoint=LnPnt; fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1); for(int i=0;i<pCurLineData->PointNum;i++)
{ fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%f\n",&LnPnt[i].X);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%f\n",&LnPnt[i].Y);
}
pCurLineData->pNext=NULL;
if(LineFlag==0)
pHeadLineData=pCurLineData;
else
pPrevLineData->pNext=pCurLineData;
LineFlag=1;
pPrevLineData=pCurLineData;
delete pCurLineData; pCurLineData=NULL;
}
}
delete pPrevLineData;
pPrevLineData=NULL;
}
{
char str1[500];
LineData *pCurLineData,*pPrevLineData;
while(! feof(pFile) && ! ferror(pFile))
{
fscanf(pFile,"%s\n",str1);
if(strcmp(str1,"LWPOLYLINE")==0)
//if(strnicmp("LWPOLYLINE",str1,10)!=0)
{
pCurLineData=new LineData[sizeof(LineData)];
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",pCurLineData->AimCode); pCurLineData->FeatureCode="C20";
pCurLineData->LineMark=1; fscanf(pFile,"%s\n",str1);
if(strcmp(str1,"102")==0)
//if(strnicmp("102",str1,3)!=0)
{
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
} fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",pCurLineData->LayerName ); fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
//fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%d\n",&pCurLineData->PointNum); Point *LnPnt;
LnPnt=new Point[pCurLineData->PointNum];
pCurLineData->pMemberPoint=LnPnt; fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1); for(int i=0;i<pCurLineData->PointNum;i++)
{ fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%f\n",&LnPnt[i].X);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%f\n",&LnPnt[i].Y);
}
pCurLineData->pNext=NULL;
if(LineFlag==0)
pHeadLineData=pCurLineData;
else
pPrevLineData->pNext=pCurLineData;
LineFlag=1;
pPrevLineData=pCurLineData;
delete pCurLineData; pCurLineData=NULL;
}
}
delete pPrevLineData;
pPrevLineData=NULL;
}
是不是new完了没有delete
{...........};
catch(CMemoryException,e)
{.............};
delete [] pPrevLineData;
delete [] LnPnt;
是这样写吗?
放在什么位置?
struct LineDataItem
{
CString AimCode;
CString FeatureCode;
CString LayerName;
int LineMark;
int PointNum;
int ChildNum;
int* pMemberChild;
Point* pMemberPoint;
};
class CLineData
{
public:
CLineData();
virtual ~CLineData();
CList<LineDataItem,LineDataItem> LineDataList;};void CCad2vctDlg::ReadDxfLWPolylineList(FILE *pFile)
{
char str1[500];
LineDataItem *pCurLineData;
while(! feof(pFile) && ! ferror(pFile))
{
fscanf(pFile,"%s\n",str1);
if(strcmp(str1,"LWPOLYLINE")==0)
//if(strnicmp("LWPOLYLINE",str1,10)!=0)
{
pCurLineData=new LineDataItem[sizeof(LineData)];
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",pCurLineData->AimCode); pCurLineData->FeatureCode="C20";
pCurLineData->LineMark=1; fscanf(pFile,"%s\n",str1);
if(strcmp(str1,"102")==0)
//if(strnicmp("102",str1,3)!=0)
{
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
} fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",pCurLineData->LayerName ); fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
//fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%d\n",&pCurLineData->PointNum); Point *LnPnt;
LnPnt=new Point[pCurLineData->PointNum];
pCurLineData->pMemberPoint=LnPnt; fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%s\n",str1); for(int i=0;i<pCurLineData->PointNum;i++)
{ fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%f\n",&LnPnt[i].X);
fscanf(pFile,"%s\n",str1);
fscanf(pFile,"%f\n",&LnPnt[i].Y);
}
LineList.LineDataList.AddTail(*pCurLineData);
}
}
}
{
LineDataItem* pa = pCurLineData->LineDataList.RemoveTail();
delete []pa->pMemberPoint;
delete []pa;
}pCurLineData=new LineDataItem[sizeof(LineData)];
没必要 LineDataItem CurLineData;不是很好吗
少这么一句
pPrevLineData=new LineData[sizeof(LineData)];