// Обрабатываем ошибочные ситуации, которые могут

 // возникнуть при работе с файлами

 try {

  // Создаем файл fsystem.dat и открываем его для записи

  CStdioFile file("fsystem.dat", CFile::modeCreate | CFile::modeWrite | CFile::typeText);

  // Временная строка, используемая для записи в файл

  CString strTmpOut;

  // Увеличиваем размер буфера до 512 байт

  strTmpOut.GetBuffer(512);

  // Записываем в файл метку тома

  strTmpOut.Format("Метка тома: %s \n", VolumeNameBuffer);

  file.WriteString(strTmpOut);

  // Записываем в файл серийный номер

  strTmpOut.Format("Серийный номер: %X \n", VolumeSerialNumber);

  file.WriteString(strTmpOut);

  // Записываем в файл тип файловой системы

  strTmpOut.Format("Тип файловой системы: %s \n", FileSystemNameBuffer);

  file.WriteString(strTmpOut);

  // Записываем в файл максимальную длину имени файла

  strTmpOut.Format("Максимальная длина имени файла: %d \n", MaximumComponentLength);

  file.WriteString(strTmpOut);

  // Записываем в файл свойства файловой системы

  strTmpOut = "Свойства файловой системы \n";

  if (FileSystemFlags & FS_CASE_IS_PRESERVED) strTmpOut += " FS_CASE_IS_PRESERVED\n";

  if (FileSystemFlags & FS_CASE_SENSITIVE) strTmpOut += " FS_CASE_SENSITIVE\n";

  if (FileSystemFlags & FS_UNICODE_STORED_ON_DISK) strTmpOut += " FS_UNICODE_STORED_ON_DISK\n";

  if (FileSystemFlags & FS_PERSISTENT_ACLS) strTmpOut += " FS_PERSISTENT_ACLS\n";

  if (FileSystemFlags & FS_FILE_COMPRESSION) strTmpOut += " FS_FILE_COMPRESSION\n";

  if (FileSystemFlags & FS_VOL_IS_COMPRESSED) strTmpOut += " FS_VOL_IS_COMPRESSED\n";

  file.WriteString(strTmpOut);

  // Закрываем файл

  file.Close();

  // Отображаем сообщение об успешном завершении приложения

  MessageBox(NULL, "File fsystem.dat", "Message", MB_OK);

 }

 // Обработчик исключения. Вызывается при ошибках

 // работы с файлами

 catch(...) {

  // Отображаем сообщение о возникшей ошибке

  MessageBox(NULL, "File I/O Error", "Error", MB_OK);

 }

 return;

}

Файл fsystem.dat, созданный приложением, можно просмотреть в любом текстовом редакторе, например Notepad или WordPad. В листинге 3.2 приведен пример файла, полученного при помощи приложения TestFile на нашем компьютере, на котором установлена операционная система Windows 95.

Листинг 3.2. Файл fsystem.dat

Метка тома: LIBRARY

Серийный номер: 1D794E8D

Тип файловой системы: FAT

Максимальная длина имени файла: 255

Свойства файловой системы

 FS_CASE_IS_PRESERVED

 FS_UNICODE_STORED_ON_DISK

<p>Исключения – класс CException</p>

Как мы рассказывали в главе “Обработка исключительных ситуаций”, язык Си++ позволяет вызывать и обрабатывать исключения любого типа. Однако эта возможность практически не используются классами, определенными в библиотеке MFC.

Для обработки исключительных ситуаций, возникающих в MFC, определен специальный класс. Сам класс CException является абстрактным классом. Объекты такого класса создавать нельзя. Для обработки исключительных ситуаций, возникающих в MFC, используется классы наследованные от класса CException:

CMemoryException      ←|←CException

Перейти на страницу:

Все книги серии Библиотека системного программиста

Похожие книги