Главная страница
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.025 c
2-1145373905
ctudent
2006-04-18 19:25
2006.05.07
DCU


3-1142434109
RomanH
2006-03-15 17:48
2006.05.07
Добавление Jpeg в таблицу


15-1144923413
Бугага
2006-04-13 14:16
2006.05.07
Работа с Карт Ридером


2-1145289625
ilifant
2006-04-17 20:00
2006.05.07
Запуск приложения один раз


2-1145336717
vegarulez
2006-04-18 09:05
2006.05.07
Как из фомы 1 передать занчение параметры в форму 2?