|
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
|