![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как получить сокращенный путь к каталогу? [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);