Мне нужно получить описание кода ошибки функции WinInet. В документации MSDN о функциях WinInet указано, какие из них я должен использовать GetLastError
функция для получения кода последней ошибки при сбое функции. Теперь, когда я проверяю документацию о GetLastError, функция
говорит.
. Чтобы получить строку ошибки для системы коды ошибок, используйте FormatMessage function
Я проверяю, какая функция delphi SysErrorMessage
внутренне вызывает функцию winapi FormatMessage , поэтому я использую эту функцию для получения описания ошибки, но не работает (я имею в виду, что не возвращает описание кода ошибки WinInet). Я тестировал этот код в Delphi 2007 и Delphi XE.
См. Этот код
uses
Wininet, Windows, SysUtils;
procedure TestWinInet(const AUrl : string);
var
hInter,hRemoteUrl : HINTERNET;
Code : Cardinal;
begin
hInter := InternetOpen(PChar('Explorer 5.0'), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if hInter=nil then
begin
Code:=GetLastError;
raise Exception.Create(Format('Error %d Description %s',[Code,SysErrorMessage(Code)]));
end;
try
hRemoteUrl := InternetOpenUrl(hInter, PChar(AUrl), nil, 0, INTERNET_FLAG_RELOAD, 0);
if hRemoteUrl=nil then
begin
Code:=GetLastError;
raise Exception.Create(Format('Error %d Description %s',[Code,SysErrorMessage(Code)]));
end;
try
//do something else
finally
InternetCloseHandle(hRemoteUrl);
end;
finally
InternetCloseHandle(hInter);
end;
end;
begin
try
//i am passing a invalid url just to raise the error
TestWinInet('Foo');
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
, когда я выполняю этот код, он возвращает код 12006, который определяется как ERROR_INTERNET_UNRECOGNIZED_SCHEME
, а соответствующее описание - Схема URL не может быть распознана или не поддерживается. 1265] Итак, вопрос:
Как мне получить описание ошибки для кодов ошибок WinInet в delphi?