1. Обробка файлів засобами MFC:
Файл – це об’єкт класу CFile.
Створення об’єкту і вибір режиму його роботи двома способами:
1-й спосіб:
CFile ім’я_об’єкта;
Ім’я_об’єкта.Open(“імя файла”, режими_ роботи);
2-й спосіб:
CFile ім’я_об’єкта(“ім’я файла”, режими_ роботи);
Режими роботи файлів
• CFile::modeCreate- створення файла
• CFile::modeRead- тільки для читання
• CFile::modeWrite-тільки для запису
• CFile::modeReadWrite-читати і писати
• CFile::modeNoTrancate-не стирати зміст уже існуючого файлу з таким же іменем
• CFile::modeText- використовується класами, які похідні від CFile.
• CFile::Binary- бінарний режим.
• CFile f1;
• f1.Open(“file1.dan”,CFile::modeCreate| CFile::modeRead);
• Закриття файлів:
• f1.Close();
Методи для читання або занесення
• Read(), Write()
• Seek(кількість_байт, відкіля_рахувати)
• SeekToBegin(), SeekToEnd().
• Приклади:
• f1.Seek(80, CFile::begin);
• F2.SeekToBegin();
• GetLength() - повертає довжину файлу в байтах
• SetLength(ULL довжина) - установлює задану довжину файла
• GetPosition() -повертає поточну позицію курсора
• GetFilePath() - повертає значення типу CString – ім’я диску та шлях до файла
• GetFileName() - повертає ім’я файла.
Постановка задачі
• Створити файл для читання і запису в нього. В текстове вікно занести рядок символів. При натисканні на кнопку цей рядок повинен записатися в файл а відтіля – у вікно списку. Також занести у вікно списку ім’я файлу, шлях до нього, довжину, та поточну позицію курсору в ньому.
void Crab_fileDlg::OnBnClickedButton1()
{CString s;
CFile f1("f1.txt",CFile::modeCreate|CFile::modeReadWrite);
m_edit1.GetWindowTextA(s);
f1.SeekToBegin();
f1.Write(s,80);
f1.SeekToBegin();
f1.Read(from_file,80);
m_list1.AddString(from_file);
long n=f1.GetLength();
s.Format("dlina=%li",n);
m_list1.AddString(s);
m_list1.AddString(f1.GetFileName( ));
s=f1.GetFilePath();
m_list1.AddString(s);
}
void Crab_with_fileDlg::OnBnClickedButton1()
{ CString s;
CFile f1("file1.txt",CFile::modeCreate|CFile::modeReadWrite);
m_edit1.GetWindowTextA(s);
f1.SeekToBegin();
f1.Write(s,80);
f1.SeekToBegin();
f1.Read(read_from_file,80);
m_list1.AddString(read_from_file);
s=f1.GetFilePath();
m_list1.AddString(s);
s=f1.GetFileName();
m_list1.AddString(s);
int dlina=f1.GetLength();
f1.SetLength(160ULL);
s.Format("dlina=%i",dlina);
m_list1.AddString(s);
int position=f1.GetPosition();
s.Format("позиція курсора=%i",position);
m_list1.AddString(s);
}
2. Серіалізація нестандартних об’єктів
Сериализация – процесс записи на диск или чтения из него
1) Создаем приложение KR .
2) Добавим в него класс Friend. Для этого в меню Project выбрать Add Class. В открывшемся окне выбрать категорию MFC и шаблон MFC Class.
3) Включить в класс CFriend элемент данных m_man и методы.
void vvod(CString ch) {
m_man+=ch;
}
void vivod (CDC*pDC) {
pDC->TextOutA(0,10, m_man);
}
void clear() {
m_man=””;
}
4) Включить в класс CKRDoc элемент данных public: CFriend about_ friend.
5) Теперь создадим обработчик OnChar() нажатия клавиши.
Поскольку требуется ввести имя мужчины, в функции OnChar() нужно вызвать метод vvod() класса CFriend.
void CKRView::OnChar(UINT nChar,UINT nRepCnt,UINT nFlags)
{
CKRDoc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
if(!pDoc)
return;
pDoc->about_ friend.vvod(CString((char)nChar));
Invalidate();
pDoc->SetModifiedFlag();//сохранять новые данные или нет
CView::OnChar(nChar, nRepCnt, nFlags);
}
Для вывода на экран выделим класс CKRView и в нем OnDraw() Добавим в него pDoc->about_ friend.vivod(pDC);
При создании нового документа нужно очистить экран.
BOOL CAnnDoc::OnNewDocument()
{ ………
about_ friend.clear();
UpdateAllViews(NULL);// информирует что документ был модифицирован
…………
}
Чтобы обеспечить сериализацию объектов класса СFriend нужно в класс СFriend добавить метод Serialize.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.