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

Вниз

Перейти выше по каталогу в строчке   Найти похожие ветки 

 
Игорёк   (2013-11-26 12:53) [0]

Такой необычный вопрос

Имеем string с строкой в нём "c:\Program Files\ASUS\"
Как сделать из неё такую строку "c:\Program Files\"

То есть сам адрес может быть каким угодно и нужно перейти по каталогу выше.

Пробовал это StringReplace(строка, что_убрать, "", [rfReplaceAll]);
вообще не срабатывает,
а если найти фрагмент ASUS\ и убрать его, как то не особо нравится вариант.
Может что то есть уже предусмотренное...


 
Медвешоног Порожок   (2013-11-26 12:56) [1]

екстрактфайлдир
екстрактфайлпас

"c:\Program Files\ASUS\.."


 
Rouse_ ©   (2013-11-26 12:59) [2]

function ExtractUpperDir(const Value: string): string;
begin
 Result := ExtractFilePath(ExcludeTrailingPathDelimiter(Value));
end;


 
Леонид   (2013-11-26 13:27) [3]


> Rouse_ ©   (26.11.13 12:59) [2]

Спасибки! очень грамотная штука!


 
Palladin ©   (2013-11-26 14:24) [4]

ExpandFileName("c:\Program Files\ASUS\..");


 
Jeer ©   (2013-11-26 14:39) [5]

Не, не спортивно:)

 function ExcludeSubPath(const path: string; level: integer): string;
 var i,cnt: integer;
 begin
   cnt := 0;
   for i:= Length(s) downto 1 do begin
     if (s[i] = #92) then Inc(cnt);
     if cnt=level then break;
   end;
   Result := copy(s,1,i);
 end;


 
Леонид   (2013-11-26 21:41) [6]


> Jeer ©   (26.11.13 14:39) [5]
>
> Не, не спортивно:)

Во во, как раз и надо было без спорта и состязаний.... )))


 
Jeer ©   (2013-11-27 01:11) [7]

>как раз и надо было без спорта и состязаний

Ты знаешь разницу между шашлыком из магазина и приготовленным тобой?


 
Jeer ©   (2013-11-27 01:17) [8]

function ExtractUpperDir(const Value: string): string;

// 7.5 us

function ExcludeSubPath(const path: string; level: integer): string;

// 4.5 us


 
Inovet ©   (2013-11-27 05:02) [9]

> [7] Jeer ©   (27.11.13 01:11)
> Ты знаешь разницу между шашлыком из магазина и приготовленным тобой?

Шалык надо покупать в магазине - в нём костей больше. (Шарик)


 
все арамисы, а я Дартаньян   (2013-11-27 08:44) [10]


> Не, не спортивно:)
Неспортивно, зато работает со всякими хитровылюбленными путями вроде x:\a\b\..\c\\d\..\..\e\1.txt, коие легко и непринуждённо получаются путём конкатенации содержимого пары-тройки полей из базы… %-)


 
brother ©   (2013-11-27 08:47) [11]

а разве это валидный путь
> x:\a\b\..\c\\d\..\..\e\1.txt

?


 
brother ©   (2013-11-27 08:47) [12]

> \\

вот это?


 
Styx   (2013-11-27 09:26) [13]

Система такой легко переварит. Повторение слешей игнорируется. Иначе было бы очень сложно слеплять путь из кусочков.


 
Inovet ©   (2013-11-27 10:08) [14]

> [13] Styx   (27.11.13 09:26)
> Система такой легко переварит.

dir c:\\
Синтаксическая ошибка в имени файла, имени папки или метке тома.

dir c:\\\
Указан недопустимый путь.


 
Palladin ©   (2013-11-27 10:48) [15]


> все арамисы, а я Дартаньян   (27.11.13 08:44) [10]

именно для канонизации таких ХВл путей и используется ExpandFileName


 
Palladin ©   (2013-11-27 11:00) [16]


> Inovet ©   (27.11.13 10:08) [14]

TFileStream.Create("c:\\\\\\1\\\\\\2\\\\\3\\\\\\\..\\\\\3\\..\\3\\1.txt", fmCreate).Free


 
Styx   (2013-11-27 13:41) [17]


> dir c:\\
> Синтаксическая ошибка в имени файла, имени папки или метке
> тома.

Ну, это вопрос к команде dir. Она делает свой разбор пути.


 
Jeer ©   (2013-11-27 15:35) [18]

>TFileStream.Create("c:\\\\\\1\\\\\\2\\\\\3\\\\\\\..\\\\\3\\..\\3\\1.txt", fmCreate).Free

Дык все ж для дебилоидов: и хлеб и масло..:)


 
брат Птибурдукова   (2013-11-27 16:30) [19]


> Palladin ©   (27.11.13 10:48) [15]
Я знаю, я пытаюсь Jeer"у донести, почему его "спортивный" вариант не слишком хорош.


 
Jeer ©   (2013-11-27 16:37) [20]

Я за аскетизм во всем:)


 
брат Птибурдукова   (2013-11-27 17:39) [21]

Имена файлов длиннее 8 символов уже даёшь или ещё держишься? :-)


 
Jeer ©   (2013-11-27 17:43) [22]

исключительно в формате 8.3 и латинскими:)


 
brother ©   (2013-11-27 18:32) [23]

> Она делает свой разбор пути.

классика)


 
брат Птибурдукова   (2013-11-27 19:29) [24]


> Inovet ©   (27.11.13 10:08) [14]
тут, кстати, есть сеанс чёрной магии
dir c:\\windows\system32 = ошибка
dir c:\windows\\system32 = ок

Полное её разоблачение тут: http://www.transl-gunsmoker.ru/2011/03/why-is-drive-letter-permitted-in-front.html?m=1


 
Inovet ©   (2013-11-28 05:44) [25]

> [24] брат Птибурдукова   (27.11.13 19:29)
> dir c:\\windows\system32 = ошибка

Это уже ошибка № 3
Не найден сетевой путь.



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

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

Наверх




Память: 0.52 MB
Время: 0.007 c
15-1399235407
Юрий
2014-05-05 00:30
2014.12.07
С днем рождения ! 5 мая 2014 понедельник


15-1398803407
Юрий
2014-04-30 00:30
2014.12.07
С днем рождения ! 30 апреля 2014 среда


2-1385455985
Игорёк
2013-11-26 12:53
2014.12.07
Перейти выше по каталогу в строчке


15-1399374780
Aleks2014
2014-05-06 15:13
2014.12.07
Как сменить программно IP сетевушки?


1-1328621735
denkop
2012-02-07 17:35
2014.12.07
Определить фактически используемый язык при отрисовке