Главная страница
    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.011 c
3-1142013327
Megabyte
2006-03-10 20:55
2006.05.07
Не хочет коннектиться в с включенным LoginPrompt


2-1145261109
d_oleg
2006-04-17 12:05
2006.05.07
функции в dll


2-1145447723
Volodya_
2006-04-19 15:55
2006.05.07
TWindowsMediaPlayer ActiveX


4-1139945594
Volf_555
2006-02-14 22:33
2006.05.07
Как свернуть/развернуть все MDI-окна в моём приложении?


2-1145420179
Rubey
2006-04-19 08:16
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский