【问题标题】:How to get the file URL from absolute path in Delphi?如何从Delphi中的绝对路径获取文件URL?
【发布时间】:2012-01-19 20:07:52
【问题描述】:

我正在寻找从 Windows 路径返回文件 URL 路径的 Delphi 函数。 Delphi 有内置的东西吗?

例子:

Input
C:\Users\Documents\File.txt

Output
file:///C:/Users/Documents/File.txt

谢谢

【问题讨论】:

    标签: delphi file url path delphi-2009


    【解决方案1】:

    您可以使用UrlCreateFromPath API 函数。

    示例如下:

    uses
      ComObj, WinInet, ShLwApi;
    
    function FilePathToURL(const FilePath: string): string;
    var
      BufferLen: DWORD;
    begin
      BufferLen := INTERNET_MAX_URL_LENGTH;
      SetLength(Result, BufferLen);
      OleCheck(UrlCreateFromPath(PChar(FilePath), PChar(Result), @BufferLen, 0));
      SetLength(Result, BufferLen);
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShowMessage(FilePathToURL('C:\Users\Documents\File.txt'));
    end;
    

    【讨论】:

    • 感谢您的回答,因为我可以看到 Remy Lebeau 建议了相同的功能。请问,函数参数中的 FilePath 是否存在,或者 UrlCreateFromPath 函数是否可以像使用纯字符串一样使用它?
    • UrlCreateFromPath 将输入路径作为字符串,因此目标路径是否实际存在并不重要。
    【解决方案2】:

    看看UrlCreateFromPath()。但请注意,file: 方案有一些注意事项。它没有跨平台标准化。有多种格式以不同的方式表示相同的路径,即使只是在 Windows 下也是如此。自 IE4 起,Win32 API 标准化为单一格式,但其他格式仍然存在。

    【讨论】:

    • 感谢您的回复。关于文件方案,这是否意味着 UrlCreateFromPath 函数的结果可能会有所不同并取决于安装的内部资源管理器?我希望这个时候没有人有IE4,但我需要依赖这个功能。
    • UrlCreateFromPath() 在 Win98SE 和 Win2K 上的 IE5 中引入。 Microsoft 标准化了它在 IE4 中对file: 方案的使用。只要您将 URL 传递给 Shell API,就可以了。
    猜你喜欢
    • 2021-10-18
    • 2016-03-03
    • 2016-07-23
    • 2012-08-27
    • 1970-01-01
    • 2015-11-15
    • 2013-06-24
    • 2010-09-21
    • 2012-04-24
    相关资源
    最近更新 更多