[Overview][Constants][Types][Procedures and functions][Variables][Index] Reference for unit 'LazFileUtils' (#lazutils)

TryCreateRelativePath

Attempts to create a path in Dest relative the path in Source.

Declaration

Source position: lazfileutils.pas line 67

function TryCreateRelativePath(

  const Dest: string;

  const Source: string;

  UsePointDirectory: Boolean;

  AlwaysRequireSharedBaseFolder: Boolean;

  out RelPath: string

):Boolean;

Description

Returns True if it is possible to create a relative path from Source to Dest Function must be thread safe, so no expanding of filenames is done, since this is not thread-safe (at least on Windows platform).

Examples:

- Dest = /foo/bar Source = /foo Result =  RelPath = bar
- Dest = /foo///bar Source = /foo// Result =  RelPath = bar
- Dest = /foo Source = /foo/bar Result =  RelPath = ../
- Dest = /foo/bar Source = /bar Result =  RelPath = ../foo/bar
- Dest = foo/bar Source = foo/foo Result =  RelPath = ../bar
- Dest = foo/bar Source = bar/foo Result =  (no shared base directory)
- Dest = /foo Source = bar Result =  (mixed absolute and relative)
- Dest = c:foo Source = c:bar Result =  (no expanding)
- Dest = c:\foo Source = d:\bar Result is  (different drives)
- Dest = \foo Source = foo (Windows) Result is  (too ambiguous to guess what this should mean)
- Dest = /foo Source = /bar AlwaysRequireSharedBaseFolder =  Result = False
- Dest = /foo Source = /bar AlwaysRequireSharedBaseFolder =  Result =  RelPath = ../foo