void Cadress3Dlg::OnBnAdd()
{
if(!UpdateData(true))
{
return;
}
CFile mFile;
if(mFile.Open(L"c:\\tian.dat",CFile::modeCreate|CFile::modeReadWrite))
{
mFile.Write(&m_start,sizeof(m_start));
}}
void Cadress3Dlg::OnBnRead()
{
CFile mFile;
if(mFile.Open(L"c:\\tian.dat",CFile::modeReadWrite))
{
mFile.Read(&m_in,sizeof(m_in));
}
UpdateData(false);
//if(mFile.
}错误在那?我通过编辑框添加变量,然后要求在列表框中显示,其中m_in为列表框的变量,m_start为编辑框的变量.
{
if(!UpdateData(true))
{
return;
}
CFile mFile;
if(mFile.Open(L"c:\\tian.dat",CFile::modeCreate|CFile::modeReadWrite))
{
mFile.Write(&m_start,sizeof(m_start));
}}
void Cadress3Dlg::OnBnRead()
{
CFile mFile;
if(mFile.Open(L"c:\\tian.dat",CFile::modeReadWrite))
{
mFile.Read(&m_in,sizeof(m_in));
}
UpdateData(false);
//if(mFile.
}错误在那?我通过编辑框添加变量,然后要求在列表框中显示,其中m_in为列表框的变量,m_start为编辑框的变量.
mFile.Close();
如果你的m_start是CString类型,用sizeof得到大小的做法是错误的。
mFile.Read(&m_in,sizeof(m_in));
这里第二个参数是要指定你读取多长。而不是你需要写入的目的串分配了多长
自己AddString上去看看
用二进制模式试下。
把.dat改成.txt试下
用二进制模式试
试过了,还是不行.
读的时候,你要先读入到基本数据类型里,比如数组(数组也可以说不是基本数据类型,但它肯定可用于文件读取),再赋给对象。
mFile.Write((LPCTSTR) m_start, m_start.length() * sizeof(TCHAR));TCHAR buff[1024];
mFile.Read(buff, sizeof(buff));
m_in = buff;
你这里我不知道你的m_start是什么类型,如果是CString你可以这样int leng=m_start.Getlenght();
mFile.Write(7m_start,sizeof(leng));
如果是string的话你可以用strlen(m_start);
mFile.Write(&m_start,sizeof(m_start));