CArray的m_nSize nIndex需要人为设置吗?该如何解决
CArray的m_nSize nIndex需要人为设置吗?
从一个文本文件LCP.txt中读取点的坐标值,然后存入到一个数组中。文件内容如下:
242 91
192 63
140 80
79 48
左列为横坐标X,右列为纵坐标Y
数组定义为
CArray <CPoint,CPoint> m_L_ControlPoints; //控制点坐标
当然也包含了#include <afxtempl.h>
下面写一个读文件的方法:
void CDlt::ReadData()
{
CFileDialog fileOpenDlg(true, "txt ", "*.txt ",NULL, "Left Image Points(*.txt) ",NULL);
int nRespond = fileOpenDlg.DoModal();
if ( nRespond != IDOK )
return;
FILE* pFile = fopen( fileOpenDlg.GetPathName(), "r+ " );
while (!feof( pFile ) )
{
CPoint pt1;
fscanf( pFile, "%d %d ",&pt1.x,&pt1.y);
m_L_ControlPoints.Add(pt1);
}
fclose( pFile );
}
程序运行后总是出错。在
fscanf( pFile, "%d %d ",&pt1.x,&pt1.y);
m_L_ControlPoints.Add(pt1);
这两行插入断点,跟踪发现:
NewElement也有,新的点pt1的x,y分别取道了文件中第一行值。
但是提示:nIndex和m_nSize地方跟踪。
各位高手,指点一下,问题出在哪里??
------解决方案--------------------
你在ReadData入口点断下,看看this是不是NULL....
------解决方案--------------------
就快要找到错了....别放弃啊...
是你的CDlt没有分配空间,或直接CDlt * pDlt = NULL了,是不是?
------解决方案--------------------
是否正确分配空间
------解决方案--------------------
p_Dlt = new CDlt();
------解决方案--------------------
呵呵,肯定有问题啊.
应该在视图里
CDlt m_Dlt;
构造函数里就不管了
不过我很好奇为什么那个偏移是8而不是4....
从一个文本文件LCP.txt中读取点的坐标值,然后存入到一个数组中。文件内容如下:
242 91
192 63
140 80
79 48
左列为横坐标X,右列为纵坐标Y
数组定义为
CArray <CPoint,CPoint> m_L_ControlPoints; //控制点坐标
当然也包含了#include <afxtempl.h>
下面写一个读文件的方法:
void CDlt::ReadData()
{
CFileDialog fileOpenDlg(true, "txt ", "*.txt ",NULL, "Left Image Points(*.txt) ",NULL);
int nRespond = fileOpenDlg.DoModal();
if ( nRespond != IDOK )
return;
FILE* pFile = fopen( fileOpenDlg.GetPathName(), "r+ " );
while (!feof( pFile ) )
{
CPoint pt1;
fscanf( pFile, "%d %d ",&pt1.x,&pt1.y);
m_L_ControlPoints.Add(pt1);
}
fclose( pFile );
}
程序运行后总是出错。在
fscanf( pFile, "%d %d ",&pt1.x,&pt1.y);
m_L_ControlPoints.Add(pt1);
这两行插入断点,跟踪发现:
NewElement也有,新的点pt1的x,y分别取道了文件中第一行值。
但是提示:nIndex和m_nSize地方跟踪。
各位高手,指点一下,问题出在哪里??
------解决方案--------------------
你在ReadData入口点断下,看看this是不是NULL....
------解决方案--------------------
就快要找到错了....别放弃啊...
是你的CDlt没有分配空间,或直接CDlt * pDlt = NULL了,是不是?
------解决方案--------------------
是否正确分配空间
------解决方案--------------------
p_Dlt = new CDlt();
------解决方案--------------------
呵呵,肯定有问题啊.
应该在视图里
CDlt m_Dlt;
构造函数里就不管了
不过我很好奇为什么那个偏移是8而不是4....