PathDelim VS DirectorySeparatorChar

PathDelim VS DirectorySeparatorChar

一个人可以使用

http://docwiki.embarcadero.com/Libraries/Seattle/en/System.IOUtils.TPath.DirectorySeparatorChar

是否有任何特别的差异,使用 System.IOUtils.TPath 的另一部分的好处是更面向对象的接口?

http://docwiki.embarcadero.com/Libraries/Seattle/en/System.SysUtils

System.SysUtils.PathDelim 是在 Delphi 6 / Kylix 1 中引入的,作为一种允许编写平台无关代码的方法。 Kylix 的引入,最初的 Delphi Linux 编译器,意味着第一次 Delphi 代码在 *nix 平台上执行,以及它的原始目标 Windows .

System.IOUtils.TPath.DirectorySeparatorChar 是最近引入的 IOUtils 单元的一部分,以支持当前的跨平台工具浪潮,它支持 MacOS,iOS,Android 并且很快将再次包含 Linux。

如果您可以在 System.SysUtilsSystem.IOUtils 之间进行选择,通常希望您使用后者。 System.IOUtils 是文件系统支持的跨平台单元。也就是说,您通常不会直接使用 DirectorySeparatorChar,而是使用 System.IOUtils.TPath.Combine 之类的方法。

TPath.DirectorySeparatorCharSystem.IOUtils中定义为

{$IFDEF MSWINDOWS}
  FDirectorySeparatorChar := '\';    // DO NOT LOCALIZE;
  // ...
{$ENDIF}
{$IFDEF POSIX}
  FDirectorySeparatorChar := '/';    // DO NOT LOCALIZE;
  // ...
{$ENDIF}

PathDelimSystem.SysUtils 中定义为

PathDelim  = {$IFDEF MSWINDOWS} '\'; {$ELSE} '/'; {$ENDIF}

虽然条件略有不同,但只有在 MSWINDOWSPOSIX 均未定义或两者均未定义的情况下,它们才会有所不同,任何平台都不会出现这种情况。以后如果有这样的平台的话,声明肯定会相应的修正。

TL;DR: 没有区别,您可以根据自己的喜好使用。