用CFile 打开文件出错,求助
<P>//代码片段如下:<BR>//打开文件<BR>bool File_manager::Open_file(CString path)<BR>{<BR> CFile info_file;<BR> CString str_buffer;<BR> CFileException cfe;<BR> //AfxMessageBox(path);<BR> if(info_file.Open(path,CFile::shareDenyNone,&cfe) == 0)<BR> {<BR> return FALSE;<BR> }<BR> CArchive ar(&info_file,CArchive::load);<BR> ar>>str_buffer;<BR> //info_file.Read(str_buffer,2);<BR> AfxMessageBox(str_buffer);<BR> ar.Close();<BR> info_file.Close();<BR> return TRUE;<BR>}<BR>第一次用vc++.net打开文件,水平有限,<BR>编译通过,打开某个txt文件时出错信息为:<BR><BR>“试图越过其尾端对一个未知名的文件进行读写”<BR><BR>2个都是txt文件,一个能读,一个要出这个错,不知道为什么,请高手解答,<BR>不甚感激!!</P><P>void CChildFrame::OnFileOpen() <BR>{<BR> // szFilters is a text string that includes two file name filters:<BR> // "*.my" for "MyType Files" and "*.*' for "All Files."<BR> char CChildFrame::szFilters[]=<BR> "MyType Files (*.my)|*.my|All Files (*.*)|*.*||";</P>
<P> // Create an Open dialog; the default file name extension is ".my".<BR> CFileDialog fileDlg (TRUE, "my", "*.my",<BR> OFN_FILEMUSTEXIST| OFN_HIDEREADONLY, szFilters, this);<BR> <BR> // Display the file dialog. When user clicks OK, fileDlg.DoModal() <BR> // returns IDOK.<BR> if( fileDlg.DoModal ()==IDOK )<BR> {<BR> CString pathName = fileDlg.GetPathName();<BR> <BR> // Implement opening and reading file in here.<BR> ...<BR> //Change the window's title to the opened file's title.<BR> CString fileName = fileDlg.GetFileTitle ();<BR> <BR> SetWindowText(fileName);<BR> }</P>
<P>}</P>
<P>All items in a list view control must have the same number of subitems.</P>
<P>Class CListCtrl provides several functions for inserting, deleting, finding, and modifying these items. For more information, see CListCtrl::GetItem, CListCtrl::InsertItem, and CListCtrl::FindItem, Using CListCtrl: Adding Items to the Control, and Using CListCtrl: Scrolling, Arranging, Sorting, and Finding in List Controls.</P>
<P><BR> VC中ctrllist的使用与数据库链接 </P>
<P>清浪冲天 马敬发 QQ: 283989349 E-mail: <a href="mailto:mjf150080@tom.com" target="_blank" >mjf150080@tom.com</A> </P>
<P>有问题时,我们可以通过<a href="http://www.hustc.mpc.cn" target="_blank" >http://www.hustc.mpc.cn</A> 这个论坛,</P>
<P>或 通过QQ 共同学习和讨论 </P>
<P><BR> </P>
<P>// DIALOG_TRAINCOURSE.cpp : implementation file<BR>//</P>
<P>#include stdafx.h<BR>#include train.h<BR>#include DIALOG_TRAINCOURSE.h<BR>#include CourseInfo.h<BR>#include DIALOG_APPISE.h<BR>#include CourseSet.h</P>
<P>#ifdef _DEBUG<BR>#define new DEBUG_NEW<BR>#undef THIS_FILE<BR>static char THIS_FILE[] = __FILE__;<BR>#endif</P>
<P>/////////////////////////////////////////////////////////////////////////////<BR>// CDIALOG_TRAINCOURSE dialog</P>
<P><BR>CDIALOG_TRAINCOURSE::CDIALOG_TRAINCOURSE(CWnd* pParent /*=NULL*/)<BR> : CDialog(CDIALOG_TRAINCOURSE::IDD, pParent)<BR>{<BR> //{{AFX_DATA_INIT(CDIALOG_TRAINCOURSE)<BR> // NOTE: the ClassWizard will add member initialization here<BR> //}}AFX_DATA_INIT<BR>}</P>
<P><BR>void CDIALOG_TRAINCOURSE::DoDataExchange(CDataExchange* pDX)<BR>{<BR> CDialog::DoDataExchange(pDX);<BR> //{{AFX_DATA_MAP(CDIALOG_TRAINCOURSE)<BR> DDX_Control(pDX, IDC_LIST1, m_content);<BR> //}}AFX_DATA_MAP<BR>}</P>
<P><BR>BEGIN_MESSAGE_MAP(CDIALOG_TRAINCOURSE, CDialog)<BR> //{{AFX_MSG_MAP(CDIALOG_TRAINCOURSE)<BR> ON_BN_CLICKED(IDC_BUTTONADD, OnButtonadd)<BR> ON_BN_CLICKED(IDC_BUTTONDEL, OnButtondel)<BR> //}}AFX_MSG_MAP<BR>END_MESSAGE_MAP()</P>
<P>/////////////////////////////////////////////////////////////////////////////<BR>// CDIALOG_TRAINCOURSE message handlers</P>
<P>void CDIALOG_TRAINCOURSE::OnButtonadd() <BR>{<BR> // TODO: Add your control notification handler code here<BR> m_database.Close();<BR> CCourseInfo m_courseinfo;<BR> m_courseinfo.m_database.Open(_T(train));<BR> m_courseinfo.DoModal();<BR> RefreshData();<BR>}</P>
<P>void CDIALOG_TRAINCOURSE::OnOK() <BR>{<BR> // TODO: Add extra validation here<BR> CDIALOG_APPISE m_apprisemanager;<BR> int i=m_content.GetSelectionMark();<BR> CString strSQL;<BR> if(i==-1){<BR> MessageBox(please choose a course first!);<BR> }<BR> else{<BR> m_apprisemanager.course_id=atoi(m_content.GetItemText(i,0));<BR> m_database.Close();<BR> m_apprisemanager.m_database.Open(_T(train));<BR> m_apprisemanager.DoModal();<BR> }</P>
<P>}</P>
<P>BOOL CDIALOG_TRAINCOURSE::OnInitDialog() <BR>{<BR> CDialog::OnInitDialog();<BR> <BR> // TODO: Add extra initialization here<BR> m_content.InsertColumn(0,课程号);<BR> m_content.InsertColumn(1,课程类别);<BR> m_content.InsertColumn(2,课程中文名称);<BR> m_content.InsertColumn(3,课程英文名称);<BR> m_content.InsertColumn(4,课程描述);<BR> m_content.InsertColumn(5,课程学时);<BR> m_content.InsertColumn(6,教材);<BR> m_content.InsertColumn(7,等效课程);<BR> m_content.InsertColumn(8,预修课程);<BR> m_content.InsertColumn(9,初训/复训标志);<BR> m_content.InsertColumn(10,开课部门);<BR> RECT rect;<BR> m_content.GetWindowRect(&rect);<BR> int wid = rect.right - rect.left;<BR> m_content.SetColumnWidth(0,wid/11);<BR> m_content.SetColumnWidth(1,wid/11);<BR> m_content.SetColumnWidth(2,wid/11);<BR> m_content.SetColumnWidth(3,wid/11);<BR> m_content.SetColumnWidth(4,wid/11);<BR> m_content.SetColumnWidth(5,wid/11);<BR> m_content.SetColumnWidth(6,wid/11);<BR> m_content.SetColumnWidth(7,wid/11);<BR> m_content.SetColumnWidth(8,wid/11);<BR> m_content.SetColumnWidth(9,wid/11);<BR> m_content.SetColumnWidth(10,wid/11);<BR> m_content.SetExtendedStyle(LVS_EX_FULLROWSELECT);<BR> RefreshData(); <BR> <BR> return TRUE; // return TRUE unless you set the focus to a control<BR> // EXCEPTION: OCX Property Pages should return FALSE<BR>}</P>
<P>void CDIALOG_TRAINCOURSE::RefreshData()<BR>{<BR> if(!m_database.IsOpen()){<BR> m_database.Open(_T(train));<BR> }<BR> m_content.DeleteAllItems();<BR> CCourseSet m_recordset(&m_database);<BR> CString strSQL;<BR> strSQL.Format(select * from COURSE);<BR> m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);<BR> CDBVariant varValue;<BR> if(m_recordset.GetRecordCount()!=0) m_recordset.MoveFirst();<BR> char buf[20];<BR> int i=0;<BR> while(!m_recordset.IsEOF())<BR> {<BR> int temp=0;<BR> m_recordset.GetFieldValue(temp,varValue);<BR> sprintf(buf,%d,varValue.m_iVal); m_content.InsertItem(i,buf);<BR> m_recordset.GetFieldValue(1,varValue);<BR> m_content.SetItemText(i,1,varValue.m_pstring->GetBuffer(1));<BR> m_recordset.GetFieldValue(2,varValue);<BR> m_content.SetItemText(i,2,varValue.m_pstring->GetBuffer(1));<BR> m_recordset.GetFieldValue(3,varValue);<BR> m_content.SetItemText(i,3,varValue.m_pstring->GetBuffer(1));<BR> m_recordset.GetFieldValue(4,varValue);<BR> m_content.SetItemText(i,4,varValue.m_pstring->GetBuffer(1));<BR> m_recordset.GetFieldValue(5,varValue);<BR> sprintf(buf,%d,varValue.m_iVal); m_content.SetItemText(i,5,buf);<BR> m_recordset.GetFieldValue(6,varValue);<BR> m_content.SetItemText(i,6,varValue.m_pstring->GetBuffer(1));<BR> m_recordset.GetFieldValue(7,varValue);<BR> sprintf(buf,%d,varValue.m_iVal); m_content.SetItemText(i,7,buf);<BR> m_recordset.GetFieldValue(8,varValue);<BR> sprintf(buf,%d,varValue.m_iVal); m_content.SetItemText(i,8,buf);<BR> m_recordset.GetFieldValue(9,varValue);<BR> sprintf(buf,%d,varValue.m_chVal); m_content.SetItemText(i,9,buf);<BR> m_recordset.GetFieldValue(10,varValue);<BR> sprintf(buf,%d,varValue.m_iVal); m_content.SetItemText(i,10,buf);<BR> m_recordset.MoveNext();<BR> i++;<BR> }<BR>}</P>
<P>void CDIALOG_TRAINCOURSE::OnButtondel() <BR>{<BR> // TODO: Add your control notification handler code here<BR> int i=m_content.GetSelectionMark();<BR> CString strSQL;<BR> if(i==-1){<BR> MessageBox(please choose a record first!);<BR> }<BR> else{<BR> int keyid=atoi(m_content.GetItemText(i,0));<BR> strSQL.Format(delete from COURSE where COURSE_ID=%d,keyid);<BR> m_database.ExecuteSQL(strSQL);<BR> strSQL.Format(delete from COURSE_EVALUATION where COURSE_ID=%d,keyid);<BR> m_database.ExecuteSQL(strSQL);<BR> m_database.Close();<BR> RefreshData();<BR> } <BR>}</P>
<P>void CDIALOG_TRAINCOURSE::OnCancel() <BR>{<BR> // TODO: Add extra cleanup here<BR> m_database.Close();<BR> CDialog::OnCancel();<BR>}</P>
页:
[1]
