お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"[Wininet]InternetCrackUrl"



 usesにWininetを加えてください。Wininet.dllはInternet Explorerで使われ
ているDLLです。

type
  TUrlInfo = record
    HostName: string;
    UrlPath: string;
    Scheme: string;
  end;

function GetUrlInfo(const AUrl: string; var AUrlInfo: TUrlInfo): boolean;
var
  URLComponents: TURLComponents;
  Scheme: array[0..INTERNET_MAX_SCHEME_LENGTH] of Char;
  HostName: array[0..INTERNET_MAX_HOST_NAME_LENGTH] of Char;
  UserName: array[0..INTERNET_MAX_USER_NAME_LENGTH] of Char;
  Password: array[0..INTERNET_MAX_PASSWORD_LENGTH] of Char;
  UrlPath: array[0..INTERNET_MAX_PATH_LENGTH] of Char;
  ExtraInfo: array[0..255] of Char;
begin
  Result := False;
  if Length(AUrl) > INTERNET_MAX_URL_LENGTH then Exit;

  URLComponents.dwStructSize := SizeOf(URLComponents); //サイズ確保

  URLComponents.nScheme := INTERNET_SCHEME_DEFAULT;
  URLComponents.lpszScheme        := Scheme;    //Schemeの領域の確保
  URLComponents.dwSchemeLength    := SizeOf(Scheme);

  URLComponents.lpszHostName      := HostName;  //HostNameの領域の確保
  URLComponents.dwHostNameLength  := SizeOf(HostName);

  URLComponents.lpszUserName      := UserName;  //UserNameの領域の確保
  URLComponents.dwUserNameLength  := SizeOf(UserName);

  URLComponents.lpszPassword      := Password;  //Passwordの領域の確保
  URLComponents.dwPasswordLength  := SizeOf(Password);

  URLComponents.lpszUrlPath       := UrlPath;   //UrlPathの領域の確保
  URLComponents.dwUrlPathLength   := SizeOf(UrlPath);

  URLComponents.lpszExtraInfo     := ExtraInfo; //ExtraInfoの領域の確保
  URLComponents.dwExtraInfoLength := SizeOf(ExtraInfo);

  Result := InternetCrackUrl(PChar(AUrl), Length(AUrl), ICU_DECODE,
              URLComponents);
  with AUrlInfo do
  begin
    HostName := URLComponents.lpszHostName;
    UrlPath := URLComponents.lpszUrlPath;
    Scheme := URLComponents.lpszScheme;
  end;
end;

■使い方■
 FormにMemoとButtonを1つ置いて下さい。

procedure TForm1.Button1Click(Sender: TObject);
var
  UrlInfo: TUrlInfo;
begin
  if GetUrlInfo('http://www.inprise.co.jp/index.html', UrlInfo) then
  begin
    Memo1.Lines.Add(UrlInfo.HostName);
    Memo1.Lines.Add(UrlInfo.UrlPath);
    Memo1.Lines.Add(UrlInfo.Scheme);
  end;
end;

                                      00/06/09 (Fri) ぶんぶん鈴木

Original document by ぶんぶん鈴木    氏 ID:(EZA00106)


ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum