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

Вниз

DirPath Подняться на уровень вверх   Найти похожие ветки 

 
Vx   (2006-09-17 02:32) [0]

Есть DirPath

DirPath := ExtractFilePath( ParamStr(0) );

Как в DirPath Подняться на уровень вверх?
или надо разбирать строчку по "\" и последний сегмент удалять?

Подскажите пожалуйста может есть стандартная функция.


 
Zeqfreed ©   (2006-09-17 06:09) [1]

ExtractFile[Path|Dir](ExcludeTrailingPathDelimiter(s));


 
Vx   (2006-09-17 15:24) [2]

Ты сам -то их пробовал?

s := ExcludeTrailingPathDelimiter(s);
Не заработало.

Использую свою

FUNCTION UpDir(UD:String):String;
var
 LastDelimiter,i: word;
BEGIN
 LastDelimiter := 0;
 Result :="";
 if length(UD)<=3 then exit;
 for i:=3 to Length(UD)-1 do begin
   if UD[i]="\" then LastDelimiter :=i;
 end;
 if i>3 then Result:=copy(UD,1,LastDelimiter-1);
END;


 
Anatoly Podgoretsky ©   (2006-09-17 16:01) [3]

Неужели ExtractFileDir не работает?


 
Dmitrij_K   (2006-09-17 16:05) [4]

Голова не работает.


 
Vx   (2006-09-17 21:50) [5]

Надо на уровень вверх подняться!

А ExtractFileDir дает текущую директорию файла.
Разве не так?


 
Loginov Dmitry ©   (2006-09-17 21:56) [6]

Vx   (17.09.06 21:50) [5]
А ExtractFileDir дает текущую директорию файла.


S := "C:\Windows\System32";
S := ExtractFileDir(S);
==>
S = "C:\Windows"


 
Zeqfreed ©   (2006-09-17 22:04) [7]

Я про ExcludeTrailingPathDelimiter не спроста написал… В D6 и в D7 он, кажется есть. Насчет пятерки не уверен только. В крайнем случае — реализовать самому.


 
Anatoly Podgoretsky ©   (2006-09-17 22:10) [8]

А нафига ты ее упомянул, во первых есть в только в последних версиях, во вторых зачем чесать левое ухо правой рукой, сказано же использовать ExtractFileDir

DirPath := ExtractFileDir(ExtractFileDir(ParamStr(0)));


 
Vx   (2006-09-17 22:16) [9]

А чего ты сразу-то не сказал, что его надо 2 раза использовать?


 
Anatoly Podgoretsky ©   (2006-09-17 22:22) [10]

Вообще то я думал, что ты программист, сам же спрашивал про предыдущую папку. Можно использовать и три раза и более.


 
Zeqfreed ©   (2006-09-17 22:37) [11]

> [8] Anatoly Podgoretsky ©   (17.09.06 22:10)

Разумеется, ExtractFileDir(ExtractFileDir(s)) и ExtractFileDir(ExcludeTrailingPathDelimiter(s)) в принципе приводят к одному и тому же результату. Но я нахожу второй подход семантически более верным и удобным к пониманию. Так что «нафига» решать не мне, а автору. А для себя я решил.


 
Anatoly Podgoretsky ©   (2006-09-18 00:40) [12]

А я первый, тем более что плясать надо от ParamStr(0)
И чего тут не понятного, текущий, предыдущий и т.д.
А вот с ExcludeTrailingPathDelimiter как раз надо голову напрячь, да и не работает это для заданного вопроса. Придется сначала вызывать ExtractFilePath
и что мы поимеем
ExtractFileDir(ExcludeTrailingPathDelimiter(ExtractFilePath(s)))
Это что просто для понимания и оптимально?


 
Zeqfreed ©   (2006-09-18 00:45) [13]

> [12] Anatoly Podgoretsky ©   (18.09.06 00:40)

Перед использованием предполагается, что в строке находится именно путь, т.е. со слешем в конце. Иначе это файл.


 
Anatoly Podgoretsky ©   (2006-09-18 00:47) [14]

Цитату привести с вопросом?

> Есть DirPath
>
> DirPath := ExtractFilePath( ParamStr(0) );



 
Zeqfreed ©   (2006-09-18 00:56) [15]

> [14] Anatoly Podgoretsky ©   (18.09.06 00:47)

А Path возвращает без слеша?


 
Германн ©   (2006-09-18 01:08) [16]


> Zeqfreed ©   (18.09.06 00:56) [15]
>
> > [14] Anatoly Podgoretsky ©   (18.09.06 00:47)
>
> А Path возвращает без слеша?
>

Со слешем. Но ты сам виноват, зачем было постить [7]? Только вызвал огонь на себя. :-)


 
Zeqfreed ©   (2006-09-18 01:24) [17]

> [16] Германн ©   (18.09.06 01:08)


> Но ты сам виноват, зачем было постить [7]? Только вызвал
> огонь на себя. :-)

Ну просто мой вариант был несправедливо отторгнут или недопонят, не знаю уж :) [7] было комментарием к [5].

#ifndef OFFTOP
#define OFFTOP
Никто не подскажет как в Qt Designer"е добавлять кнопки на Toolbar? $-)
#endif


 
Германн ©   (2006-09-18 01:33) [18]


> Ну просто мой вариант был несправедливо отторгнут

Нет справедливо. Просто есть более прямой путь получения желаемого результата. И он был предложен уже в [3].
Ну только надо учесть специфику ответов АП. :-)


 
Zeqfreed ©   (2006-09-18 01:39) [19]

> [18] Германн ©   (18.09.06 01:33)

Ладно, пусть будет так.
Меня сейчас больше интересует синяя часть моего поста :)


 
Германн ©   (2006-09-18 02:08) [20]


> Меня сейчас больше интересует синяя часть моего поста :)
>

А для этого, имхо, нужно создать свою ветку! И там задать сей вопрос без всяких оффтопов! И правила не нарушишь и больше шансов, что вопрос прочитают и ответят.


 
Reindeer Moss Eater ©   (2006-09-18 12:58) [21]

ExpandFileName("..\");


 
Zeqfreed ©   (2006-09-18 13:04) [22]

> [20] Германн ©   (18.09.06 02:08)


> А для этого, имхо, нужно создать свою ветку! И там задать
> сей вопрос без всяких оффтопов! И правила не нарушишь и
> больше шансов, что вопрос прочитают и ответят.

Боюсь, что по той теме кроме флуда я бы ничего не получил :) На IRC-канале мне ответили примерно за 10-15 минут.


 
Anatoly Podgoretsky ©   (2006-09-18 15:04) [23]

Германн ©   (18.09.06 01:33) [18]
Специфика простая, для инвалидов ума ответ на 10 сообщений ниже.



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

Форум: "Начинающим";
Текущий архив: 2006.10.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.038 c
2-1158734167
stfu
2006-09-20 10:36
2006.10.08
Проблема с вставкой текста на русском в xls(Excel)


2-1158905284
londinium
2006-09-22 10:08
2006.10.08
Анализ выбранных фильтров


3-1154815736
lexander
2006-08-06 02:08
2006.10.08
ADO + агрегирование (access)


15-1158566307
Ega23
2006-09-18 11:58
2006.10.08
Breakpoint conditions


2-1158670460
Некто_Аполло
2006-09-19 16:54
2006.10.08
Засунуть PNG в DLL





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