Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];

Вниз

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

 
Вадим ©   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.034 c
14-1081088912
Гаврила
2004-04-04 18:28
2004.05.02
Постоянная работа для программера в Москве


4-1077797789
KADAN
2004-02-26 15:16
2004.05.02
ехплорер падает :(


6-1078366060
gogi
2004-03-04 05:07
2004.05.02
Как узнать имя файла аттачмента не загружая письмо ?


3-1081073444
Артем К.
2004-04-04 14:10
2004.05.02
Как в Query определить таблицу Master для таблицы Detail


14-1081381010
_none_
2004-04-08 03:36
2004.05.02
во сколько бы вы оценили...





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