Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.05.07;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.014 c
15-1145264225
fast2
2006-04-17 12:57
2006.05.07
База на Access. При подключении к ней, спрашивает пароль и логин.


2-1145280366
nyron
2006-04-17 17:26
2006.05.07
печатная форма


15-1144763743
Джо
2006-04-11 17:55
2006.05.07
Скрипт форума поменялся?


1-1143728730
kyn66
2006-03-30 18:25
2006.05.07
Добавить информацию в EXE-шник


4-1139733773
Alextp
2006-02-12 11:42
2006.05.07
Контекстное меню Проводника





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский