Правильный спецификатор формата для печати HRESULT с помощью оператора Format () в Delphi 6 в шестнадцатеричном формате? - PullRequest
3 голосов
/ 22 ноября 2011

У меня есть приложение Delphi 6, которое использует библиотеку компонентов DSPACK. Эта библиотека печатает строку журнала в режиме отладки каждый раз, когда происходит сбой конкретной операции DirectShow. Вот соответствующая строка кода souce:

format('Error %08lX from FillBuffer!!!', [Result])

К сожалению, эта строка приводит к исключению EConvertError в SysUtils.ConvertErrorFmt (). Какой правильный спецификатор формата используется при попытке правильно распечатать HRESULT в шестнадцатеричном формате?

1 Ответ

7 голосов
/ 22 ноября 2011

Токен, который вы передаете (%08lX) в функцию, недействителен, чтобы отформатировать значение как шестнадцатеричное, вы должны использовать символ X, а для указания длины используйте точку, за которой следует число желаемых символов.как это %.8X

Проверьте этот образец

format('Error %.8X from FillBuffer!!!', [Result])
...