Как получить URL файла по абсолютному пути в Delphi? - PullRequest
5 голосов
/ 14 декабря 2011

Я ищу функцию Delphi, которая возвращает путь к файлу URL из пути Windows.Есть ли что-то встроенное в Delphi?

Пример:

Input
C:\Users\Documents\File.txt

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

Спасибо

Ответы [ 2 ]

8 голосов
/ 14 декабря 2011

Посмотрите на UrlCreateFromPath(). Обратите внимание, что есть предостережения со схемой file:. Это не стандартизировано через платформы. Существует несколько форматов, которые по-разному представляют один и тот же путь, даже под Windows. Начиная с IE4, Win32 API стандартизируется в одном формате, но другие форматы все еще существуют.

7 голосов
/ 14 декабря 2011

Можно использовать функцию API UrlCreateFromPath.

Вот пример:

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;
...