Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.07;
Скачать: CL | DM;

Вниз

Как сократить полный путь файла?   Найти похожие ветки 

 
vagra ©   (2006-04-17 19:17) [0]

Здравствуйте!

Есть ли какая-нибудь функция, которая делает из полного пути файла
"c:\program files\ochen-dlinnyi put\myfilename.ext"
такой:
"c:\progr...\myfilename.ext"

Спасибо.


 
Rial ©   (2006-04-17 19:53) [1]

//Компактная запись имени фйла, где указываются макс. длина новой строки и
//макс. количество папок перед конечным файлом

function CompacName(Const Name:String;Const MaxLen,NumOfSlh:Integer):String;
begin
Result:=CompacNameExp(Name,MaxLen,NumOfSlh,NumOfSlh);
end;


//Та же фунцкия, с выравниванием с обеих сторон
function CompacNameExp(Name:String;Const MaxLen,NumOfSlhLeft,NumOfSlhRight:Integer):String;
Var I,J,L,BP,US:Integer;
begin
L:=Length(Name);
Result:=Name;
If (L<=MaxLen)then Exit;
J:=1;
I:=0;
While (I<NumOfSlhLeft)and(J<=L) do begin
 If (Name[J]="\")then Inc(I);
 Inc(J);
end;
BP:=J;
J:=L;
I:=0;
While (J>BP)and(I<NumOfSlhRight)do begin
 If (Name[J]="\")then Inc(I);
 Dec(J);
end;
I:=J;
US:=BP+L-I;
While (J>BP)and(US<MaxLen)do begin
 If (Name[J]="\")then I:=J-1;
 Dec(J);
 Inc(US);
end;
Name:=Copy(Name,1,BP-1)+"..."+Copy(Name,I+1,L-I);
If (Length(Name)<L)then Result:=Name;
end;


//Относительное имя файла, относительно текущей директории

function MinimizeFileName(Const FileName,DirName:String):String;
Var I,P:Integer;
   L1,L2:Integer;
begin
Result:=FileName;
If (FileName=DirName)then begin
 Result:="";
 Exit;
end;
If (ExtractFileDir(FileName)=DirName)then begin
 Result:=ExtractFileName(FileName);
 Exit;
end;
L1:=Length(FileName);
L2:=Length(DirName);
P:=1;
While (P<=L1)and(P<=L2)and(FileName[P]=DirName[P])do
 Inc(P);
If (P>=L1)or(P>=L2)then begin
 If (P>L1)then Result:=FileName
          else Result:=Copy(FileName,P+1,L1-P);
 Exit;
end;
While (P>=0)and(FileName[P]<>"\")do Dec(P);
If (P<3)then Exit;
Result:="..\";
I:=P+1;
While (I<=L2)do begin
 If (DirName[I]="\")then Result:=Result+"..\";
 Inc(I);
end;
Result:=Result+Copy(FileName,P+1,L1-P);
end;


P.S. Функции мои. Но пользуюсь давно, глючить не должны.


 
TUser ©   (2006-04-17 19:58) [2]

The GetShortPathName function obtains the short path form of a specified input path.

Будет с тильдами.


 
Джо ©   (2006-04-17 20:16) [3]

> //Относительное имя файла, относительно текущей директории

Есть ExtractRelativeFileName в SysUtils.pas


 
Гаврила ©   (2006-04-17 22:08) [4]

А еще есть MinimizeName



Страницы: 1 вся ветка

Текущий архив: 2006.05.07;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.027 c
2-1145257356
KyRo
2006-04-17 11:02
2006.05.07
Cкрол мыши


15-1145012682
tsa
2006-04-14 15:04
2006.05.07
Синхронизация часов компьютера


10-1118131658
-: MaxiM :-
2005-06-07 12:07
2006.05.07
F1 BOOK


15-1145126517
Loginov Dmitry
2006-04-15 22:41
2006.05.07
Сюрприз, однако


2-1144903632
paul_k
2006-04-13 08:47
2006.05.07
Не могу понять. Или у меня руки кривые или одно из двух.