[fpc-pascal]ExtractFileDir ?

Iván Montes senbei at terra.es
Thu Feb 13 00:57:15 CET 2003


According to the docs
http://www.freepascal.org/docs-html/units/node23.html#SECTION002366000000000
000000

 "ExtractFileDir returns only the directory part of FileName, not including
a
 driveletter."

 But it does return the driveletter, so either the docs are mistaken or the
 RTL.

 If the docs are right here there is a function that will return only the
 dir, removing
 any drive letter.
 ie:
  c:\testdir\test\file.ext  => \testdir\test
  c:\testdir\ => \testdir
  c:testdir\ => testdir
  \testdir\test.exe => \testdir

 [objpas\fina.inc]

 function ExtractFileDir(const FileName: string): string;
 var i,j: longint;
 begin
   if FileName[2]=':' then j:=3
                      else j:=1;

   I := Length(FileName);
   while (I > 0) and not (FileName[I] in ['/', '\', ':']) do Dec(I);
   if (I > j) and (FileName[I] in ['\', '/']) and
      not (FileName[I - 1] in ['/', '\', ':']) then Dec(I);

   Result := Copy(FileName, j, I-j+1);
 end;


 HTH, ivan





More information about the fpc-pascal mailing list