Прогон программы записи в файл в Unicode и обычном формате

Приведенная программа может вывести строку "Hello, world" в файл MyFile.txt в обычном формате и в формате Unicode.

#define UNICODE#ifdef UNICODE#define _UNICODE#endif#include <windows.h>#include <tchar.h>#include <stdio.h> void main() { HANDLE hFile;PTCHAR FileName = _T("MyFile.txt");PTCHAR TextString = _T("Hello, world.");DWORD iWrite, StringLength = lstrlen(TextString); _tprintf(_T("There are %ld symbols in text string %s\n"), StringLength, TextString); hFile = CreateFile(FileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL | 0, NULL); iWrite = StringLength;#ifdef UNICODE iWrite = 2*StringLength;#endif WriteFile(hFile, TextString, iWrite, &iWrite, NULL);printf("%d bytes are written to file\n", iWrite);CloseHandle(hFile); }

Рекомендуется оба варианта получившегося файла просмотреть с помощью блокнота Nоtepad.

Обработка ошибок

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

Вызываемая Win32-функция может возвратить значение, свидетельствующее об ошибке (например, NULL для функций типа HANDLE или ноль для функций типа BOOL). В таких случаях можно попытаться выявить тип ошибки при помощи функции GetLastError - она возвращает код последней ошибки, который хранится в локальной памяти потока, вызвавшего ошибку. Коды ошибок (а их более 10 тысяч), представляющие собой 32-битные числа, находятся в заголовочном файле WinError.h.

Если приложение содержит функции, к которым обращаются другие программы, то желательно, чтобы эти функции синтезировали код ошибки в случае возникновения ошибочных ситуаций, то есть вели себя подобно функциям Win32 API. Это можно сделать при помощи функции SetLastError.

Для преобразования кода ошибки в ее содержательное описание предназначена Win32-функция FormatMessage. Получить описание ошибки по ее коду можно также с помощью утилиты errlook.exe, поставляемой в составе Visual Studio. Аналогичная информация содержится в справочной системе MSDN.

В тех случаях, когда об ошибке необходимо оповестить пользователя, можно использовать звуковой сигнал (функция MessageBeep). Для обработки ошибок также активно применяется структурная обработка исключений (Structured Exception Handling, см., [4], [10]).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: