Главная страница
    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.033 c
7-1078390349
Олег
2004-03-04 11:52
2004.05.02
Переключение клавиатуры


8-1075724226
ctrannik
2004-02-02 15:17
2004.05.02
преобразование звукового файла в тестовой фаил


1-1082201089
AndersoNRules
2004-04-17 15:24
2004.05.02
Mojno li zapihnuti v TStream peremennuyu a: TCustomShellTreeView?


14-1081242454
serge35
2004-04-06 13:07
2004.05.02
Наконец-то азиаты решили написать операционку


6-1077897538
Andrew
2004-02-27 18:58
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский