本文整理自网络,侵删。
演示:
unit Unit3;
interface
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type TForm3 = class(TForm) Memo1: TMemo; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form3: TForm3;
implementation
{$R *.dfm}
usesIdURI;
procedure TForm3.FormCreate(Sender: TObject);
var URI: TIdURI;beginURI := TIdURI.Create('http://login:password@somehost.somedomain.com:8080/some_path/something_else.html?param1=val?m2=val');try // Protocol = URI.Protocol // Username = URI.Username // Password = URI.Password // Host = URI.Host // Port = URI.Port // Path = URI.Path // Query = URI.Params Memo1.Lines.Add(URI.Protocol); Memo1.Lines.Add(URI.Username); Memo1.Lines.Add(URI.Password);
Memo1.Lines.Add(URI.Host); Memo1.Lines.Add(URI.Port); Memo1.Lines.Add(URI.Path); Memo1.Lines.Add(URI.Params);
finally URI.Free;end;end;
end.
另外一个方案:
{$APPTYPE CONSOLE}
uses
Windows,
SysUtils,
WinInet;
procedure ParseURL(const lpszUrl: string);
var
lpszScheme : array[0..INTERNET_MAX_SCHEME_LENGTH - 1] of Char;
lpszHostName : array[0..INTERNET_MAX_HOST_NAME_LENGTH - 1] of Char;
lpszUserName : array[0..INTERNET_MAX_USER_NAME_LENGTH - 1] of Char;
lpszPassword : array[0..INTERNET_MAX_PASSWORD_LENGTH - 1] of Char;
lpszUrlPath : array[0..INTERNET_MAX_PATH_LENGTH - 1] of Char;
lpszExtraInfo : array[0..1024 - 1] of Char;
lpUrlComponents : TURLComponents;
begin
ZeroMemory(@lpszScheme, SizeOf(lpszScheme));
ZeroMemory(@lpszHostName, SizeOf(lpszHostName));
ZeroMemory(@lpszUserName, SizeOf(lpszUserName));
ZeroMemory(@lpszPassword, SizeOf(lpszPassword));
ZeroMemory(@lpszUrlPath, SizeOf(lpszUrlPath));
ZeroMemory(@lpszExtraInfo, SizeOf(lpszExtraInfo));
ZeroMemory(@lpUrlComponents, SizeOf(TURLComponents));
lpUrlComponents.dwStructSize := SizeOf(TURLComponents);
lpUrlComponents.lpszScheme := lpszScheme;
lpUrlComponents.dwSchemeLength := SizeOf(lpszScheme);
lpUrlComponents.lpszHostName := lpszHostName;
lpUrlComponents.dwHostNameLength := SizeOf(lpszHostName);
lpUrlComponents.lpszUserName := lpszUserName;
lpUrlComponents.dwUserNameLength := SizeOf(lpszUserName);
lpUrlComponents.lpszPassword := lpszPassword;
lpUrlComponents.dwPasswordLength := SizeOf(lpszPassword);
lpUrlComponents.lpszUrlPath := lpszUrlPath;
lpUrlComponents.dwUrlPathLength := SizeOf(lpszUrlPath);
lpUrlComponents.lpszExtraInfo := lpszExtraInfo;
lpUrlComponents.dwExtraInfoLength := SizeOf(lpszExtraInfo);
InternetCrackUrl(PChar(lpszUrl), Length(lpszUrl), ICU_DECODE or ICU_ESCAPE, lpUrlComponents);
Writeln(Format('Protocol : %s',[lpszScheme]));
Writeln(Format('Host : %s',[lpszHostName]));
Writeln(Format('User : %s',[lpszUserName]));
Writeln(Format('Password : %s',[lpszPassword]));
Writeln(Format('Path : %s',[lpszUrlPath]));
Writeln(Format('ExtraInfo: %s',[lpszExtraInfo]));
end;
begin
try
ParseURL('http://login:password@somehost.somedomain.com/some_path/something_else.html?param1=val¶m2=val');
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
readln;
end.
这将返回
Protocol : http
Host : somehost.somedomain.com
User : login
Password : password
Path : /some_path/something_else.html
ExtraInfo: ?param1=val¶m2=val
相关阅读 >>
Delphi windows 编程[2] - 学习窗体生成的过程二
Delphi 取得开机时间 开机时间总长度(可精确到秒,分钟等)
更多相关阅读请进入《Delphi》频道 >>