【发布时间】: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
我正在寻找从 Windows 路径返回文件 URL 路径的 Delphi 函数。 Delphi 有内置的东西吗?
例子:
Input
C:\Users\Documents\File.txt
Output
file:///C:/Users/Documents/File.txt
谢谢
【问题讨论】:
标签: delphi file url path delphi-2009
您可以使用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;
【讨论】:
UrlCreateFromPath 将输入路径作为字符串,因此目标路径是否实际存在并不重要。
看看UrlCreateFromPath()。但请注意,file: 方案有一些注意事项。它没有跨平台标准化。有多种格式以不同的方式表示相同的路径,即使只是在 Windows 下也是如此。自 IE4 起,Win32 API 标准化为单一格式,但其他格式仍然存在。
【讨论】:
UrlCreateFromPath() 在 Win98SE 和 Win2K 上的 IE5 中引入。 Microsoft 标准化了它在 IE4 中对file: 方案的使用。只要您将 URL 传递给 Shell API,就可以了。