网上有这么一遍文章关于目录缩短的文章
"
如果有这样一个目录: 
  c:\windows\media\temp\abc\sound\chime.wav 
我希望它能缩短成: 
   c:\windows\..\sound\chime.wav 
  如何写程序呢? function shortenfilename(s : string) : string; 
var 
  drive,curdrive : string[2]; 
  dir,curdir : string[80]; 
  name : string[20]; 
  ext : string[5]; 
  i : byte; 
begin 
 for i:=1 to length(s) do s[i]:=upcase(s[i]); 
  s:=fexpand(s); 
  fsplit(s,dir,name,ext); 
 drive:=copy(dir,1,2); 
  dir:=copy(dir,4,length(dir)-3); 
  getdir(0,curdir); 
 curdrive:=copy(curdir,1,2); 
 curdir:=copy(curdir,4,length(curdir)-3)+'\'; 
 if drive=curdrive then begin 
 if copy(dir,1,length(curdir))=curdir then begin 
 i:=length(curdir); 
 if length(dir)<>i then dir:=dir+'\'; 
 shortenfilename:=copy(dir,i+1,length(dir)-i-1)+name+ext; 
 end else shortenfilename:=copy(s,3,length(s)-2); 
  end else shortenfilename:=s; 
end; 
"
但是我在delphi6运行这个程序时,系统说找不到fexpands与fsplit这两个函数,不知道这两个函数在什么unit中,请大侠告之。
  

解决方案 »

  1.   

    据我所知delphi6没有提供fexpands与fsplit这两个函数,我认为可能是作者自定义的两个函数,因为往往作者出于倏忽或者认为没有必要说的,在自己的文章中会采用一些自定义的函数,这需要你通观全篇,结合上下文来看看。其实你这里只要知道这段代码的作用和思路就可以了,可以自己写代码来实现的。
      

  2.   

    呵呵,此文章就只有那么多,我全贴出来的,大富翁论坛上有朋友也贴过,也只有那么多,我估计是需要uses某个单元,所以想问一下。
      

  3.   

    有一个很有名的免费的Pascal语言编译器,GNU-Pascal!里面有个gpc.pas就是了!
      

  4.   

    DELPHI又非语言?其它编译器中带的单元文件就不能编译吗?
      

  5.   

    你是光要显示吗?
    如果只是要显示,可以用:
    var
      r:TRect;
    begin
      r := Rect(0,0,100,100);
      DrawText(Canvas.Handle,'aas\2223\233234\43435\24354.he',-1,r, DT_PATH_ELLIPSIS )
    end;