Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT - [50]
Метод FileSystemInfo получает данные о файловой системе текущего тома и записывает их в файл fsystem.dat в текущем каталоге. Для получения информации о файловой системе используется функция GetVolumeInformation, описанная выше.
Данные, полученные функцией FileSystemInfo, временно заносятся в строку strTmpOut класса CString. При этом используется метод Format, чтобы получить форматированную запись, содержащую дополнительное текстовое описание.
Для записи в файл мы создали объект класса CStdioFile. В конструкторе мы сразу указали имя файла, который надо создать и открыть. Все операции с файлом, включая его создание, выполняются в блоке try. В случае возникновении ошибки во время создания или других операций с файлом вызывается исключение, которое будет обработано блоком catch.
Мы специально создаем файл и открываем его, используя конструктор класса CStdioFile, а не метод Open. Метод Open в случае возникновения ошибки возвращает соответствующее значение, но не вызывает исключение. Поэтому надо было бы специально проверять значение возвращаемое методом Open.
Для записи в файл мы вызываем метод WriteString, передавая ему в качестве параметра строку strTmpOut, которая содержит данные подготовленные для записи. Каждый вызов метода WriteString записывает в файл одну строку, так как в конце strTmpOut мы всегда записываем символ перевода строки.
Чтобы закрыть файл, мы используем метод Close базового класса CFile. В случае успешного завершения на экране отображается сообщение с именем файла fsystem.dat и управление возвращается методу InitInstance.
Если при работе с файлом возникла ошибка, управление передается блоку catch. В нем отображается сообщение об ошибке, а затем управление сразу возвращается методу InitInstance. Невыполненная часть блока try игнорируется.
>// Включаемый файл для MFC
>#include
>//=====================================================
>// Главный класс приложения CMFStartApp
>//=====================================================
>class CMFStartApp : public CWinApp {
>public:
> virtual BOOL InitInstance();
> void FileSystemInfo();
>};
>// Создаем объект приложение класса CMFStartApp
>CMFStartApp MFStartApp;
>//=====================================================
>// Переопределяем виртуальный метод InitInstance
>// класса CWinApp
>//=====================================================
>BOOL CMFStartApp::InitInstance() {
> // Определяем характеристики файловой системы
> FileSystemInfo();
> // Завершаем приложение
> return FALSE;
>}
>//=====================================================
>// Метод FileSystemInfo главного класса приложения
>// Определяет характеристики текущего тома и записывает
>// их в файл
>//=====================================================
>void CMFStartApp::FileSystemInfo() {
> // Метка тома
> CString VolumeNameBuffer;
> // Максимальная длина метки тома
> DWORD nVolumeNameSize = 100;
> // Серийный номер тома
> DWORD VolumeSerialNumber;
> // Максимальная длина имени файла
> DWORD MaximumComponentLength;
> // Характеристики файловой системы
> DWORD FileSystemFlags;
> // Тип файловой системы
> CString FileSystemNameBuffer;
> // Максимальная длина строки типа файловой системы
> DWORD nFileSystemNameSize = 100;
> // Получаем данные о файловой системе и текущем устройстве
> GetVolumeInformation(NULL, VolumeNameBuffer.GetBuffer(nVolumeNameSize), nVolumeNameSize, &VolumeSerialNumber, &MaximumComponentLength, &FileSystemFlags, FileSystemNameBuffer.GetBuffer(nFileSystemNameSize), nFileSystemNameSize);
> // Снимаем блокировку буферов
> VolumeNameBuffer.ReleaseBuffer();
> FileSystemNameBuffer.ReleaseBuffer();
> // Обрабатываем ошибочные ситуации, которые могут
> // возникнуть при работе с файлами
> 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";

Java Enterprise Edition (Java EE) остается одной из ведущих технологий и платформ на основе Java. Данная книга представляет собой логичное пошаговое руководство, в котором подробно описаны многие спецификации и эталонные реализации Java EE 7. Работа с ними продемонстрирована на практических примерах. В этом фундаментальном издании также используется новейшая версия инструмента GlassFish, предназначенного для развертывания и администрирования примеров кода. Книга написана ведущим специалистом по обработке запросов на спецификацию Java EE, членом наблюдательного совета организации Java Community Process (JCP)

Что такое ГЕЙМДИЗАЙН? Это не код, графика или звук. Это не создание персонажей или раскрашивание игрового поля. Геймдизайн – это симулятор мечты, набор правил, благодаря которым игра оживает. Как создать игру, которую полюбят, от которой не смогут оторваться? Знаменитый геймдизайнер Тайнан Сильвестр на примере кейсов из самых популярных игр рассказывает как объединить эмоции и впечатления, игровую механику и мотивацию игроков. Познакомитесь с принципами дизайна, которыми пользуются ведущие студии мира! Создайте игровую механику, вызывающую эмоции и обеспечивающую разнообразие.

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.