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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.05 c
1-1156420595
DevilDevil
2006-08-24 15:56
2006.10.08
OnKeyDown работает некорректно


3-1154893282
Анатоль
2006-08-06 23:41
2006.10.08
сетевой интерфейс


1-1156494622
ancot
2006-08-25 12:30
2006.10.08
TabControl без 3D рамки


2-1158743253
korleonemike
2006-09-20 13:07
2006.10.08
загрузка из xml в Tlistview


3-1154940837
yard83
2006-08-07 12:53
2006.10.08
Сообщения драйвера БД на английском.