Как получить шестнадцатеричное
представление HRESULT
Часто мы используем функции, которые в качестве
результата выполнения возвращают код ошибки. Если
функция вернула 0, то выполнение прошло успешно, если
не 0... то тут начинается самое интересное. По
возвращенному коду ошибки теперь нужно найти
информацию по ее природе и возможным путям
исправления. Проблема заключается в том, что
практически во всех сборниках кодов ошибок они
перечисляются в шестнадцатеричном формате, а не в
десятичном.
Чтобы быстрее определить причину ошибки, полученное
значение (например, -2147463168) приведем в
шестнадцатеричную форму.
Делается это достаточно просто:
// Предыдущие манипуляции вернули нам такое значение кода ошибки:
ErrorCode := -2147016646;
HexCode := IntToHex(ErrorCode, 8);
// В HexCode попадает строковое значение 80005000,
// найти теперь описание ошибки будет стоить значительно меньших трудов.
|
Не поленитесь добавить в свой обработчик ошибок
такой код, со временем вы оцените удобство
автоматического получения шестнадцатеричного кода.
Еще удобнее переводить в шестнадцатеричное значение
используя функцию Format. В этой функции для вывода
шестнадцатеричного значения кода ошибки достаточно
воспользоваться спецификатором %x.
Например, вот так:
ErrorMessage := Format(
'При выполнении операции произошла ошибка с кодом %0:d (0x%0:x)',
[ErrorCode]);
// В ErrorMessage попадает такое значение:
// При выполнении операции произошла ошибка с кодом -2147016646 (0x80005000)
|
То же самое можно сделать при помощи стандартного
калькулятора Windows. Переведите его в инженерный режим,
введите десятичное значение кода ошибки (-2147016646),
переведите в шестнадцатеричный формат, установив
переключатель в положение Hex и у полученного значения
(FFFFFFFF80005000) отсеките первые восемь символов. В
результате получите 80005000.
Сегодня мы научились правильно получать
шестнадцатеричный код ошибки вызовов функций.
|