在 Inno Setup Pascal 脚本中从 URL 解析主机名和协议
Parse hostname and protocol from URL in Inno Setup Pascal Script
有没有办法从 URL 获取主机名和协议?
我的用例:
- 在安装时用户输入应用程序并且 API URL
- 获取主机名
allowedOrigins
配置
示例url:
https://somelink.com/#/login
https://someapilink.com/api/
想要的结果:
https://somelink.com
https://someapilink.com
如果您真的需要完整的 URL 解析,您可以使用 ParseURL
WinAPI function.
但如果您只需要主机名和协议,我会求助于您自己解析 URL:
function GetUrlHostName(Url: string): string;
var
P: Integer;
begin
Result := '';
P := Pos('://', Url);
if P > 0 then
begin
Result := Copy(Url, P + 3, Length(Url) - P - 1);
P := Pos('/', Result);
if P > 0 then Result := Copy(Result, 1, P - 1);
P := Pos('#', Result);
if P > 0 then Result := Copy(Result, 1, P - 1);
P := Pos(':', Result);
if P > 0 then Result := Copy(Result, 1, P - 1);
end;
end;
function GetUrlProtocol(Url: string): string;
var
P: Integer;
begin
Result := '';
P := Pos('://', Url);
if P > 0 then
begin
Result := Copy(Url, 1, P - 1);
end;
end;
(GetUrlHostName
不考虑可能的用户名和密码)
有没有办法从 URL 获取主机名和协议?
我的用例:
- 在安装时用户输入应用程序并且 API URL
- 获取主机名
allowedOrigins
配置
示例url:
https://somelink.com/#/login
https://someapilink.com/api/
想要的结果:
https://somelink.com
https://someapilink.com
如果您真的需要完整的 URL 解析,您可以使用 ParseURL
WinAPI function.
但如果您只需要主机名和协议,我会求助于您自己解析 URL:
function GetUrlHostName(Url: string): string;
var
P: Integer;
begin
Result := '';
P := Pos('://', Url);
if P > 0 then
begin
Result := Copy(Url, P + 3, Length(Url) - P - 1);
P := Pos('/', Result);
if P > 0 then Result := Copy(Result, 1, P - 1);
P := Pos('#', Result);
if P > 0 then Result := Copy(Result, 1, P - 1);
P := Pos(':', Result);
if P > 0 then Result := Copy(Result, 1, P - 1);
end;
end;
function GetUrlProtocol(Url: string): string;
var
P: Integer;
begin
Result := '';
P := Pos('://', Url);
if P > 0 then
begin
Result := Copy(Url, 1, P - 1);
end;
end;
(GetUrlHostName
不考虑可能的用户名和密码)