Das lässt sich doch ganz leicht klären:
Delphi-Quellcode:
ShowMessage(ExtractFileDir ('C:\Daten\Test.dat')); // C:\Daten
ShowMessage(ExtractFilePath('C:\Daten\Test.dat')); // C:\Daten\
ShowMessage(ExtractFileDir ('C:\Test.dat')); // C:\
ShowMessage(ExtractFilePath('C:\Test.dat')); // C:\
ExtractFileDir ist für die Anzeige (z. B. auf Labels) gedacht, ExtractFilePath für tas weiterarbeiten.
Das kommt saher, dass Windows 95 Probleme mit Pfadangaben wie C:\\text.ini hatte und man deshalb nicht mit der Anzeigefunktion arbeiten konnte. Also brauchte man eine Funktion, die einfach das \ noch da lässt, und man fügt beim Dateinamen kein \ mehr hinzu, wenn man ihn mit dem Verzeichnis verknüpft. Windows 98 kommt schon mit \\ klar, da könnte das dann wegfallen (ist aber unschön und ein Vergleich wird komplizierter, weil eines \\ und das andere \ enthalten könnte und trotzdem dir gleiche Datei gemeint ist).
Übrigens ist so eine Funktion ziemlich einfach selbst zu schreiben, beispielsweise, wenn man ein Archivformat erfindet und dann das Trennzeichen / verwendet:
Delphi-Quellcode:
function ExtractArchiveFilePath(const Archiv: String): String;
begin
Result := Copy(Archiv, 1, LastDelimiter('/', Archiv)); //Kopiert alle Zeichtn bis zum letzten /
end;