Иллюстрированный самоучитель по Visual Studio.Net

В нашем интернет-магазине вы можете купить электрогрелку HK-25 оптом и в розницу. | Как снять верхний молдинг двери Клуб. | Международный сборный груз смотрите здесь. | Atoll a550std источник. |

Приложение на основе диалога



Уверен, что многие из читателей, разрабатывая свой код или запустив чужой многообещающий код, получали сообщение типа:

0xC000000S STATUS_ACCESS_VIOLATION

Раньше, во времена DOS, довольно часто можно было видеть сообщение «General Protection Fault» («Общая ошибка защиты»). Сообщения такого рода иногда вызывают чувство беспомощности и досады. Первая мысль — случилось что-то ужасное, вторая — неужели нельзя поподробнее объяснить причину отказа? Теперь, во времена COM (Component Object Model — Модель многокомпонентных объектов), количество ошибок и различного рода несоответствий драматически возрастает. В файле WinError.h, который можно найти в папке Include Visual Studio 6, содержатся описания свыше 1300 кодов ошибок, а в 7-й версии этот же файл содержит описания уже свыше 2500 кодов. Не будет преувеличением сказать, что не каждый разработчик будет с энтузиазмом искать файл WinError.h, а затем искать в нем код своей очередной ошибки.

Анализируя файл WinError.h, можно заметить, что есть две категории ошибок. Первая категория — коды \Win32-ошибок, которые имеют вид десятичного числа, например:

#define ERROR_ACCESS_DENIED 5L

Надеюсь, вы не забыли, что суффикс ' L' задает тип константы (long). Вторая категория — это коды ошибок, возвращаемых многими OLE- и СОМ-АР1-функци-ями, например:

#define E_NOTIMPL _HRESULT_TYPEDEF_(0x80004001L)

Последние имеют вид шестнадцатеричных чисел, которые хранятся в переменных типа HRESULT.

Примечание

Этот тип не является еще одним описателем (Handle), как может показаться, судя по его имени. Он определен в файле WTypes.h оператором эквивалентности typedef LONG HRESULT и используется как набор битовых полей, имеющих определенный смысл. Самым необычным в этой ситуации является то, что суть ошибки (ее текстовое описание), то есть то, что более всего интересует программиста, присутствуете файле WinError.h в виде комментария. Вот фрагмент файла, который описывает одну ошибку:

// Messageld: ERROR_FILE_NOT_FOUND

//

// MessageText:



Начало  Назад  Вперед