Советы по Delphi

       

Сокращенное имя каталога


Есть имя каталога:

c:\windows\media\temp\abc\sound\chime.wav

Мне необходима сокращенная запись, такая как

c:\windows\..\sound\chime.wav

а не полный путь к файлу.

Есть ли простой способ для этого?

Я разработал процедуру, которая делает нечто похожее. Она сокращает имя каталога, когда он и текущий путь имеют в корне тот же диск и/или часть пути, совпадающие вначале. Полученный результат (сокращенная запись) действительно легче для восприятия. Я производил кодирование в шестнадцатиричном редакторе в Borland Pascal и некоторое время не использовал. Я не думаю, что данный код может быть несовместим с последними версиями Delphi.

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 beginif copy(dir,1,length(curdir))=curdir then begini:=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;
[000078]



Содержание раздела