Как я могу получить описание ошибки для кода ошибки WinInet из delphi

Мне нужно получить описание кода ошибки функции 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?

8
задан Salvador 7 July 2011 в 04:10
поделиться