ForceDirectory - creates a directory if none exists Returns True if directory exists or if it was successfully created TrimFilename - trim double path delimiters, heading and trailing spaces and special dirs . and .. The function cuts leading and trailing spaces and uses ResolveDots to shorten the file name. ResolveDots Creates a relative path from BaseDirectory to Filename Creates a relative path from BaseDirectory to Filename. A trailing path delimiter of BaseDirectory is ignored. If there is no relative path it returns Filename. If BaseDirectory and Filename are the same and UsePointDirectory is false it returns the empty string. If UsePointDirectory is true it returns '.'. Duplicate path delimiters are treated as one. In other words if it returns a relative file name then the following is true: TrimFilename(Filename) = TrimFilename(BaseDirectory+PathDelim+Result). This function is thread safe and therefore does not support current directories as needed by Windows file names like D:test. Returns true if Filename is below Path Path is a directory, Filename a file or directory. Returns true if Filename is a file or directory somewhere below Path. This is a logical test, so it does not check symlinks. Note: if both Filename and Path are the same, the result is false. For example under Unix the Filename '/usr/lib/fpc' is below Path '/usr/lib', '/usr' and '/'. Splits parameters separated by one or more spaces.Parameters are separated by one or more spaces (#9,#10,#13,#32). Quotes are parsed as single parameter. if ReadBackslash=true then \" is replaced to " and not treated as quote. #0 is always end. Resolves a symlink to the real file. It does not resolve symlinks in parent directories.If a symlink can not be resolved the function returns the empty string if ExceptionOnError is false. If ExceptionOnError is true it raises an EFOpenError with a message, containing more details. On Windows it simply returns Filename. Resolves all symlinks in Filename, including all directories.If a symlink can not be resolved the function returns the empty string if ExceptionOnError is false. If ExceptionOnError is true it raises an EFOpenError with a message, containing more details. Resolves a symlink to the real file. It does not resolve symlinks in parent directories.If a symlink can not be resolved it returns Filename. It uses ReadAllLinks. Removes duplicate path delimiters and resolves logically . and ..This function shortens duplicate path delimiters to single path delimiters. It resolves 'A/../B' to 'B', which might be wrong under Unix if A is a symlink. The functions does not check the file system. The single dot './A' is resolved to 'A', but a single '.' is kept as '.'.