リンクぎれかどうか確認するには?


通りすがり  2005-03-10 03:30:23  No: 13689  IP: [192.*.*.*]

あるURLを用意し、それがちゃんと存在するURL(リンク先があるのか)なのかを調べたいのですが出来ません。
コンポーネントは特に問いませんので、やり方があればぜひ教えていただきたい次第です。

編集    削除
にしの  2005-03-10 03:59:45  No: 13690  IP: [192.*.*.*]

こんな感じでしょうか。
uses wininet;を追加してください。
キャッシュが残っているとうまく判別できないかも。

function ExistsUrl(const Url: String): Boolean;
var
  hInet, hFile: HINTERNET;
begin
  hInet :=  InternetOpen('WinInet',
  INTERNET_OPEN_TYPE_PRECONFIG,
    nil,
    nil,
    0);

  hFile := InternetOpenUrl(
    hInet,
    PCHAR(Url),
    nil,
    0,
    INTERNET_FLAG_RELOAD,
    0);
  Result := (hFile <> nil);

  InternetCloseHandle(hFile);
  InternetCloseHandle(hInet);

end;

編集    削除
pppi  2005-03-10 04:16:14  No: 13691  IP: [192.*.*.*]

function ExistURL(URLString : string) : boolean;
  var vIdHTTP : TIdHTTP;
begin
  // Delphi付属のindy コンポーネント
  Result := False;
  vIdHTTP := TIdHTTP.Create;
  try
    try
      vIdHTTP.Head(URLString);
      Result := True;
    except
      on EIdUnknownProtocol do
       begin
         // 不明なプロトコル
       end;
      on EIdHTTPProtocolException do
       begin
         // ファイルがない
       end;
      else
       begin
        // なんだろうね
       end;
     end;
  finally
    vIdHTTP.Free;
  end;
end;

編集    削除