2016-11-21 1 views
5

Man kann verwenden entwederPathDelim VS DirectorySeparatorChar

  • System.IOUtils.TPath.DirectorySeparatorChar

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

OR

  • System.SysUtils.PathDelim

Gibt es irgendwelche besonderen Unterschiede, Vorteile mit einem anderen Teil von System.IOUtils.TPath ist mehr objektorientierte Schnittstelle?

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

+0

Es hängt davon ab, ob Sie mehrere Plattformen ausrichten möchten. PathDelim scheint auf Windows beschränkt zu sein, während TPath für alle Betriebssysteme gültig ist. – whosrdaddy

+0

@whosrdaddy Nein, 'PathDelim' unterstützt alle Plattformen –

Antwort

4

System.SysUtils.PathDelim wurde in Delphi 6/Kylix 1, als ein Mittel eingeführt, um das Schreiben von Plattform-unabhängigen Code zu ermöglichen. Mit der Einführung von Kylix, dem ursprünglichen Delphi-Linux-Compiler, wurde der Delphi-Code zum ersten Mal auf einer * nix-Plattform ausgeführt, ebenso wie das ursprüngliche Ziel von Windows.

System.IOUtils.TPath.DirectorySeparatorChar ist Teil der Einheit IOUtils, die in jüngerer Zeit eingeführt wurde, um die aktuelle Welle plattformübergreifender Werkzeuge zu unterstützen, die MacOS, iOS, Android unterstützt und in Kürze auch Linux umfassen wird.

Wenn Sie zwischen System.SysUtils und System.IOUtils wählen können, wird von Ihnen im Allgemeinen erwartet, dass Sie Letzteres verwenden. Die System.IOUtils ist die plattformübergreifende Einheit für die Dateisystemunterstützung. Das heißt, Sie würden DirectorySeparatorChar nicht direkt verwenden, sondern stattdessen Methoden wie System.IOUtils.TPath.Combine verwenden.

2

TPath.DirectorySeparatorChar wird in System.IOUtils als

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

während PathDelim in System.SysUtils als

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

definiert wird, während die conditionals leicht unterschiedlich sind, wären sie nur dadurch unterscheiden, wenn weder oder beide MSWINDOWS und POSIX wurden definiert, was bei keiner Plattform der Fall ist. Und wenn es in Zukunft eine solche Plattform geben würde, wären die Erklärungen sicherlich entsprechend festgelegt.

TL; DR: Es gibt keinen Unterschied, Sie können beide nach Ihren Vorlieben verwenden.

Verwandte Themen