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

Ускорение продвижения
Если вам трудно попасть на первые места в поиске самостоятельно, попробуйте технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Если ни один запрос у вас не продвинется в Топ10 за месяц, то в SeoHammer за бустер вернут деньги.



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

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

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

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- и СОМ-АРI-функциями, например:

#define E_NOTIMPL _HRESULT_TYPEDEF_(0x80004001L)

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

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

// Messageld: ERROR_FILE_NOT_FOUND
//
// MessageText:
//
// The system cannot find the file specified.
//
#define ERROR FILE NOT FOUND 2L

В файле есть несколько макроопределений, которые позволяют выделять некоторые параметры сообщения, но они не дают возможности программным способом выделить поле MessageText, так необходимое нам с вами. В файле приведены описания двух форматов кодов ошибок. Один из них определяет Win32-ошибки, а другой – СОМ-ошибки. Оба имеют сходную структуру, но различаются в трактовке старших разрядов.

Общее для них поле (Code) содержит относительный код или позицию ошибки в группе ошибок, связанных с той или иной ветвью в дереве Windows-технологий. Группы заданы кодом Facility. Например, группа, определяемая кодом Facility=3, объединяет ошибки работы с памятью, а группа Facility=17 объединяет все коды ошибок, которые могут возникнуть при использовании технологии СОМ+. Мощность множества вариаций атрибута Facility в версии Studio .NET 7.0 больше (23), чем в Visual Studio 6 (16), так как возросло количество поддерживаемых Windows технологий.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.