在 Inno Setup Pascal 脚本中从 URL 解析主机名和协议

Parse hostname and protocol from URL in Inno Setup Pascal Script

有没有办法从 URL 获取主机名和协议?

我的用例:

  1. 在安装时用户输入应用程序并且 API URL
  2. 获取主机名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不考虑可能的用户名和密码)