Есть имя каталога:
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 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; |