根据root + web链接确定文件/文件夹路径?

时间:2011-12-10 15:41:50

标签: string delphi path delphi-7

  

可能重复:
  Conversion between absolute and relative paths in Delphi

我正在尝试弄清楚如何根据原始网络链接获取文件路径。在我的应用程序中,我有两个值:

fRootDir:String = C:\Some Directory\My Web Site\(应用程序目录)

fImgPath:String = ../Some Other Web Site/SomeImage.jpg(来自网页)

结果必须是:C:\Some Directory\Some Other Web Site\SomeImage.jpg

注意图像路径前面的../。这可能是../../../中的多个,其中每个../表示上传文件夹。图片SomeImage.jpg实际上是C:\Some Directory\Some Other Web Site\的位置。

另请注意,网络链接使用/ - 这不是转换为\的问题。问题在于注意..并实际查看上面的目录。

现在我需要将两个属性组合在一起,根据根路径和图像路径,在计算机上找到SomeImage.jpg的最终路径。

2 个答案:

答案 0 :(得分:3)

使用PathCanonicalize SHLWAPI function非常容易。

只做

function SimplifyPath(const Path: string): string;
var
  buf: array[0..MAX_PATH - 1] of char;
begin
  if PathCanonicalize(buf, PChar(Path)) then
    result := buf
  else
    RaiseLastOSError;
end;

答案 1 :(得分:3)

更简单:

const
  RootFolder = 'D:\PerforceThuis\Marjan\Probeersels\StackOverflow';
  RelativeFolder = '..\..\General\Plugins';
begin
  WriteLn(ExpandFileName(IncludeTrailingBackSlash(RootFolder)+RelativeFolder));

在D6中测试过。输出:

D:\PerforceThuis\Marjan\General\Plugins