PathDelim VS DirectorySeparatorChar
PathDelim VS DirectorySeparatorChar
一个人可以使用
- System.IOUtils.TPath.DirectorySeparatorChar
http://docwiki.embarcadero.com/Libraries/Seattle/en/System.IOUtils.TPath.DirectorySeparatorChar
或
- System.SysUtils.PathDelim
是否有任何特别的差异,使用 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.SysUtils
和 System.IOUtils
之间进行选择,通常希望您使用后者。 System.IOUtils
是文件系统支持的跨平台单元。也就是说,您通常不会直接使用 DirectorySeparatorChar
,而是使用 System.IOUtils.TPath.Combine
之类的方法。
TPath.DirectorySeparatorChar
在System.IOUtils
中定义为
{$IFDEF MSWINDOWS}
FDirectorySeparatorChar := '\'; // DO NOT LOCALIZE;
// ...
{$ENDIF}
{$IFDEF POSIX}
FDirectorySeparatorChar := '/'; // DO NOT LOCALIZE;
// ...
{$ENDIF}
而 PathDelim
在 System.SysUtils
中定义为
PathDelim = {$IFDEF MSWINDOWS} '\'; {$ELSE} '/'; {$ENDIF}
虽然条件略有不同,但只有在 MSWINDOWS
和 POSIX
均未定义或两者均未定义的情况下,它们才会有所不同,任何平台都不会出现这种情况。以后如果有这样的平台的话,声明肯定会相应的修正。
TL;DR: 没有区别,您可以根据自己的喜好使用。
一个人可以使用
- System.IOUtils.TPath.DirectorySeparatorChar
http://docwiki.embarcadero.com/Libraries/Seattle/en/System.IOUtils.TPath.DirectorySeparatorChar
或
- System.SysUtils.PathDelim
是否有任何特别的差异,使用 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.SysUtils
和 System.IOUtils
之间进行选择,通常希望您使用后者。 System.IOUtils
是文件系统支持的跨平台单元。也就是说,您通常不会直接使用 DirectorySeparatorChar
,而是使用 System.IOUtils.TPath.Combine
之类的方法。
TPath.DirectorySeparatorChar
在System.IOUtils
中定义为
{$IFDEF MSWINDOWS}
FDirectorySeparatorChar := '\'; // DO NOT LOCALIZE;
// ...
{$ENDIF}
{$IFDEF POSIX}
FDirectorySeparatorChar := '/'; // DO NOT LOCALIZE;
// ...
{$ENDIF}
而 PathDelim
在 System.SysUtils
中定义为
PathDelim = {$IFDEF MSWINDOWS} '\'; {$ELSE} '/'; {$ENDIF}
虽然条件略有不同,但只有在 MSWINDOWS
和 POSIX
均未定义或两者均未定义的情况下,它们才会有所不同,任何平台都不会出现这种情况。以后如果有这样的平台的话,声明肯定会相应的修正。
TL;DR: 没有区别,您可以根据自己的喜好使用。