2016-11-21 10 views
5

biri yaPathDelim VS DirectorySeparatorChar

  • System.IOUtils.TPath.DirectorySeparatorChar

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

VEYA

  • System.SysUtils.PathDelim
kullanabilirsiniz

System.IOUtils.TPath, bir nesnenin başka bir bölümünün kullanılmasıyla ilgili özel bir farklılık var mıdır, daha fazla nesne yönelimli arabirim midir?

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

+0

Birden çok platformu hedeflemek isteyip istemediğinize bağlıdır. TPD tüm işletim sistemi için geçerli iken PathDelim Windows ile sınırlı gibi görünüyor. – whosrdaddy

+0

@whosrdaddy Hayır, 'PathDelim' tüm platformları destekler –

cevap

4

System.SysUtils.PathDelim platform bağımsız kod yazma sağlamak için bir araç olarak, Delphi 6/Kylix 1 'de sunulmuştur. Orijinal Delphi Linux derleyicisi olan Kylix'in tanıtımı, ilk kez Delphi kodunun bir * nix platformunda ve orijinal Windows hedefinde yürütüldüğü anlamına geliyordu.

System.IOUtils.TPath.DirectorySeparatorChar, MacOS, iOS, Android'i destekleyen ve yakında Linux'u bir kez daha kapsayacak olan, çapraz platform aracının geçerli dalgasını desteklemek için daha yakın zamanda tanıtılan IOUtils biriminin bir parçasıdır.

System.SysUtils ve System.IOUtils arasında bir seçiminiz olduğunda, genellikle ikincisini kullanmanız beklenir. System.IOUtils, dosya sistemi desteği için çapraz platform birimidir. Yani, genellikle DirectorySeparatorChar doğrudan kullanmazsınız, ancak bunun yerine System.IOUtils.TPath.Combine gibi yöntemleri kullanırsınız. koşul biraz farklı olmakla birlikte PathDelim

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

olarak System.SysUtils tanımlandığı ise

2

TPath.DirectorySeparatorChar ise sadece farklı olacaktır,

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

olarak System.IOUtils tanımlanır ne veya MSWINDOWS ve POSIX her iki Herhangi bir platform için durum böyle değildir. Gelecekte böyle bir platform olacak olsaydı, beyanlar elbette buna göre belirlenirdi.

TL; DR: Fark yoktur, tercihinize göre kullanabilirsiniz.

İlgili konular