Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как получить сокращенный путь к каталогу? [D6, WinXP]


KorD ©   (2005-06-29 15:43:00) 

Есть длинный путь, к примеру
C:\Program Files\Common Files\Borland Shared\Images\Icons\

надо вывести его в сокращенном виде, типа
C:\Program Files\...\Icons\

Подскажите, пожалуйста, функцию.


Просто Джо   (2005-06-29 23:11:00) [1]


>  [7] KorD   (29.06.05 18:34)

Зачем велосипеды? Ведь уже посоветовали: [1] и [6].


KorD   (2005-06-29 18:34:00) [2]

Нашел похожую тему:
Функция преобразования длинного пути в короткий
http://delphi.vline.ru/cgi-bin/forum.pl?n=5&id=1117971408

и по результатам ее прочтения написал функцию,
кому надо пробуйте

function TfAccLAB.GetCompactPath(mRect:TRect; mStr:String):String;
var
P: PChar;
R: TRect;
begin
P := AllocMem(Length(mStr) + 1);
StrCopy(P, PChar(mStr));
SetRect(R, mRect.Left, mRect.Top, mRect.Right, mRect.Bottom);
DrawText(Canvas.Handle, P, Length(mStr), R,
  DT_SINGLELINE or DT_CALCRECT or DT_LEFT or DT_MODIFYSTRING or DT_PATH_ELLIPSIS);
Result := P;
FreeMem(P);
end;

вызов:
GetCompactPath(Label1.Canvas.ClipRect, Путь_к_файлу)


Просто Джо   (2005-06-29 18:20:00) [3]

См. модуль FileCtrlфункция MinimizeName. Она выводит надпись на канву (на манер DrawText) но из тела самой функции можешь выдрать алгоритм составления строки - он несложен, впрочем.


-=XP=-   (2005-06-29 17:27:00) [4]

Copy(ADatabaseName,1, 10)

Магическое число?


RDA   (2005-06-29 17:24:00) [5]

Выдрал из ФИБ+
lbDBName.Caption:=Copy(ADatabaseName,1,10)+'...'+
     Copy(ADatabaseName,Length(ADatabaseName)-32,MaxInt);


-=XP=-   (2005-06-29 17:21:00) [6]

я вроде функцию API гдето встречал

Дежавю? По какому критерию будем "усекать"? По количеству символов в строке?


KorD   (2005-06-29 17:06:00) [7]

я вроде функцию API гдето встречал, которая возвращает сокращенных путь, вот только где не помню :-(

в винде повсюду применяется такое сокращение,
врядли что только через DrawText пользуют


-=XP=-   (2005-06-29 15:46:00) [8]

DrawText(Canvas.Handle, ... DT_PATH_ELLIPSIS);


Наверх

Титульная страница Поиск, карта сайта Написать письмо