On Tue, 9 Feb 2010, Paul van Helden wrote:


On 2010/02/09 03:20 PM, Michael Van Canneyt wrote:
I'm talking specifically about /relative/ paths, ie. ones with ../../../ in them.

On 2010/02/09 02:02 PM, Graeme Geldenhuys wrote:
  - ExpandFileName()
  - ExpandUNCFileName()
  - ExpandFileNameUTF8()
  - CleanAndExpandFilename()
  - ExpandUNCFileNameUTF8()
  - CleanAndExpandDirectory()


Graeme: you also missed this. None of those functions take a base path and applies a relative path to produce a new absolute path. The function must be able to go up some directories and then down some others.


ExpandFileName does exactly that.


No it doesn't, unless you're assuming your current directory as the base path. ExtractRelativePath specifically takes a base path as a parameter. Its inverse should do the same. In a GUI app (at least mine) I don't care about my current directory.

Yes it does ?

ExpandFileName(BasePath+RelativePath);

Will get rid of all '..' pairs and do what you need. Obviously, BasePath
must be an absolute pathname; But the same holds for ExtractRelativePath.

Michael.

--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to