Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.02;
Скачать: CL | DM;

Вниз

Сократить имя файла   Найти похожие ветки 

 
Вадим ©   (2004-04-15 00:01) [0]

Здравствуйте.

Возникла следующая проблема. Емеем путь к файлу, например:  c:\program files\super\puper\soft\rulez\forever\superpuperapplication.exe

Этот путь необходимо сократить до определенного кол-ва символов. Вернее, чтобы путь не превышал определенное количество символов.
Например: c:\program files\...\forever\superpuperapplication.exe

Как лучше это сделать? Кто-нибудь встречал подобную функцию? Пробовал писать сам. Вроде получилось, но только вроде. Иногда виснет, так и не смог понять в каком случае.

Спасибо за внимание.


 
Andy BitOff ©   (2004-04-15 00:21) [1]

Так ты покажи чего получилось.


 
Вадим ©   (2004-04-15 00:43) [2]


> Andy BitOff ©   (15.04.04 00:21) [1]


Думаю, что лучше поискать готовую функцию (тем более давным-давно я ее уже где-то видел), чем разбираться в неработающем коде.


 
Andy BitOff ©   (2004-04-15 00:45) [3]

Ищи.


 
Rouse_ ©   (2004-04-15 00:46) [4]

Тебе именно твой вариант нужен или GetShortPathName устроит?


 
Anatoly Podgoretsky ©   (2004-04-15 00:53) [5]

Ему функция эллипс нужна, вот только не помню в какой она библиотеке и как называется.


 
Вадим ©   (2004-04-15 00:57) [6]


> Rouse_ ©   (15.04.04 00:46) [4]
> Тебе именно твой вариант нужен или GetShortPathName устроит?


Нет, этот вариант не подойдет.


 
Игорь Шевченко ©   (2004-04-15 00:57) [7]

например

DrawText (....DT_PATH_ELLIPSIS or DT_MODIFYSTRING)


 
Rouse_ ©   (2004-04-15 01:09) [8]

Ну тогда вот лови, заняло около 5 минут...

// Параметры
// Value - сама строка
// StartSlash - кол-во слэшей от начала
// EndSlash - кол-во слэшей от конца
function Demo(const Value: String; const StartSlash, EndSlash: Byte): String;
const
 STR_SLASH = "\";
 STR_TRIPLE = "...";
var
 BeforePart, AfterPart: String;
 I: Cardinal;
 Counter: Byte;
begin
 Counter := 0;
 I := 1;
 while Counter < StartSlash do
 begin
   if Value[I] <> STR_SLASH then
   begin
     BeforePart := BeforePart + Value[I];
     Inc(I);
   end
   else
   begin
     Inc(Counter);
     BeforePart := BeforePart + Value[I];
     Inc(I);
   end;
 end;

 Counter := 0;
 I := Length(Value);
 while Counter < EndSlash do
 begin
   if Value[I] <> STR_SLASH then
   begin
     AfterPart := Value[I] + AfterPart;
     Dec(I);
   end
   else
   begin
     Inc(Counter);
     AfterPart := Value[I] + AfterPart;
     Dec(I);
   end;
 end;
 Result := BeforePart + STR_TRIPLE + AfterPart;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Caption := Demo("c:\program files\super\puper\soft\rulez\forever\superpuperapplication.exe",
   2, 2);
end;


 
Rouse_ ©   (2004-04-15 01:18) [9]

Проверки на кол-во слэшей и зашлест друг за друга сам встроишь :)



Страницы: 1 вся ветка

Текущий архив: 2004.05.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
3-1081226068
_sulent
2004-04-06 08:34
2004.05.02
Работа через MS SQL Server клиентов


3-1080986096
Хэтч
2004-04-03 13:54
2004.05.02
Можно ли "привязать" Image к строке в Table ?


14-1081102647
Piter
2004-04-04 22:17
2004.05.02
А где народ?


1-1081767069
Vetalich
2004-04-12 14:51
2004.05.02
Регистрация программы


4-1078559500
cherrex
2004-03-06 10:51
2004.05.02
Journalplayback hook