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

Вниз

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

 
Игорёк   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.003 c
15-1398803407
Юрий
2014-04-30 00:30
2014.12.07
С днем рождения ! 30 апреля 2014 среда


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


15-1398812815
GrayFace
2014-04-30 03:06
2014.12.07
Чем нарисовать график функции (таблица x,y)?


15-1399371710
Дмитрий СС
2014-05-06 14:21
2014.12.07
Функция возвращающая интерфейс


15-1398506830
RDen
2014-04-26 14:07
2014.12.07
win 7 resmon ничего не отображает





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