如何从Delphi中的绝对路径获取文件URL?

Mar*_*ner 5 delphi url file path delphi-2009

我正在寻找一个Delphi函数,它返回Windows路径中的文件URL路径.在Delphi中有内置的东西吗?

例:

Input
C:\Users\Documents\File.txt

Output
file:///C:/Users/Documents/File.txt
Run Code Online (Sandbox Code Playgroud)

谢谢

Rem*_*eau 8

看看UrlCreateFromPath().但请注意,该file:计划存在一些警告.它不是跨平台的标准.有多种格式以不同的方式表示相同的路径,即使只是在Windows下.从IE4开始,Win32 API标准化为单一格式,但其他格式仍然存在.


TLa*_*ama 7

您可以使用UrlCreateFromPathAPI函数.

这是一个例子:

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;
Run Code Online (Sandbox Code Playgroud)