Главная страница
    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.009 c
2-1145180834
Yastreb
2006-04-16 13:47
2006.05.07
Работа Paradox на ненастроенных машиннах


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


15-1145005040
kot andrei
2006-04-14 12:57
2006.05.07
Долевое строительство


3-1142560399
soi
2006-03-17 04:53
2006.05.07
Перехват момента добавления довой записи в DBF файл из внешней пр


3-1142349686
GERDA
2006-03-14 18:21
2006.05.07
ORA 9.2 BLOB->CLOB





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский