void system2::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, sname);
DDX_Text(pDX, IDC_EDIT2, snum);
DDX_Text(pDX, IDC_EDIT3, sy);
DDX_Text(pDX, IDC_EDIT4, sm);
DDX_Text(pDX, IDC_EDIT5, sd);
DDX_Text(pDX, IDC_EDIT6, sgame);
DDX_Text(pDX, IDC_EDIT7, sun);
DDX_Text(pDX, IDC_EDIT8, sphone);
/*DDX_Radio(pDX, IDC_RADIO1, man);
DDX_Radio(pDX, IDC_RADIO2, wman);*/
DDX_Text(pDX, IDC_EDIT9, sex);
}
void system2::OnBnClickedButton1()
{
// TODO: 在此添加控制元件通知處理程式代碼
student u;
u.stuname = sname;
u.stunum = snum;
u.year = sy;
u.month = sm;
u.day = sd;
u.stugame = sgame;
u.unit = sun;
u.phone = sphone;
u.stusex = sex;
CFile file;
if (!(file.Open(_T("d:\\11.txt"), CFile::modeReadWrite |CFile::modeCreate | CFile::shareDenyNone)))
{
MessageBox(_T("無法打開檔案"));
return;
}
file.Write(&u, sizeof(u));
file.Close();
MessageBox("添加成功");
CDialog::EndDialog(0);
}

求助各位大佬,為什么我的資訊無法寫進檔案中?
其中不報錯,但就是寫入不了資料
uj5u.com熱心網友回復:

問題比較多
1.UpdateData(true); 更新控制元件系結的變數
uj5u.com熱心網友回復:
能說的詳細一點么



uj5u.com熱心網友回復:
student 結構體定義最好使用原始型別。int char[xx] 不用c++的型別。stringuj5u.com熱心網友回復:
首先確認一下,視窗里面的輸入資訊是否獲取成功,然后才是寫檔案的問題
uj5u.com熱心網友回復:
UpdateData(true);// 不要u
file.Write(sname, sname.GetLength());
,,,,,
uj5u.com熱心網友回復:
還是不行呀,檔案應該可以打得開,就寫不進
uj5u.com熱心網友回復:
首先 呼叫:UpdateData(true);其次呢,不要直接保存物件。物件里面有指標,參考。
應該在寫成員函式 public:
void student::save(CFile *pFile)
{
pFile->Write(stuname.GetBuffer(0), stuname.GetLength()+1); ////stuname是CString物件,而且ASCII編碼。
pFile->Write(&year,sizeof(int)); /////year為int型別
..................................
}
在OnBnClickedButton1()中呼叫:
u.save(&file);
大功告成。
uj5u.com熱心網友回復:
UpdateDateI(true),更新控制元件系結變數uj5u.com熱心網友回復:
// 不要uafxDump << sname << "\n";
file.Write(sname, sname.GetLength());
uj5u.com熱心網友回復:
Debug下單步看一下結構體中的資料是否正確?uj5u.com熱心網友回復:
void system2::OnBnClickedButton1()
{
// TODO: 在此添加控制元件通知處理程式代碼
UpdateDateI(true); // 加上這一行。這是主要問題
student u;
u.stuname = sname;
u.stunum = snum;
u.year = sy;
u.month = sm;
u.day = sd;
u.stugame = sgame;
u.unit = sun;
u.phone = sphone;
u.stusex = sex;
CFile file;
if (!(file.Open(_T("d:\\11.txt"), CFile::modeReadWrite |CFile::modeCreate | CFile::shareDenyNone)))
{
MessageBox(_T("無法打開檔案"));
return;
}
file.Write(&u, sizeof(u)); // 這里用 sizeof(u)也是不對的,如果想這樣寫,就要修改student結構的定義
file.Close();
MessageBox("添加成功");
CDialog::EndDialog(0);
}
uj5u.com熱心網友回復:
void CMFCApp2Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, name);
DDX_Text(pDX, IDC_EDIT2, age);
DDX_Text(pDX, IDC_EDIT3, phone);
}
void CMFCApp2Dlg::OnBnClickedOk()
{
//多個EDIT控制元件Student類例子寫出EDIT控制元件文本到檔案
class Student {
public:
CString sname;
CString sage;
CString sphone;
CString ss()
{
return "{ name: "+sname + " , age: " + sage + " , phone: "+ sphone+" }";
};
};
CFile file;
Student S;
UpdateData();
S.sname = name;
S.sage = age;
S.sphone = phone;
file.Open("d:/Student.txt", CFile::modeCreate | CFile::modeReadWrite);
file.Write(S.ss(), S.ss().GetLength());
file.Close(); // *【點贊給分】*
}
uj5u.com熱心網友回復:
你用二進制方式寫入,默認是文本方式轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/31919.html
標籤:基礎類
