2016-11-21 4 views
5

Можно использовать либоPathDelim В.С. 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

+0

Это зависит от того, хотите ли вы настроить таргетинг на несколько платформ. PathDelim, похоже, ограничен Windows, в то время как TPath действителен для всех ОС. – whosrdaddy

+0

@whosrdaddy Нет, 'PathDelim' поддерживает все платформы –

ответ

4

System.SysUtils.PathDelim была введена в Delphi 6/Kylix 1, в качестве средства, чтобы дать возможность написания платформы независимого кода. Внедрение Kylix, оригинального компилятора Delphi Linux, означало, что в первый раз Delphi-код выполняется на платформе * nix, а также его исходной целью Windows.

System.IOUtils.TPath.DirectorySeparatorChar является частью блока IOUtils, который был представлен совсем недавно, чтобы поддерживать текущую волну кросс-платформенного инструмента, поддерживающего MacOS, iOS, Android, и в скором времени включит Linux еще раз.

Если у вас есть выбор между и System.IOUtils, вы, как правило, должны использовать последний. System.IOUtils - это кросс-платформенный модуль для поддержки файловой системы. Тем не менее, вы обычно не использовали бы DirectorySeparatorChar напрямую, но вместо этого использовали бы такие методы, как System.IOUtils.TPath.Combine.

2

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: Нет никакой разницы, вы можете использовать либо исходя из ваших предпочтений.