Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Выбираем только то, что нужно [D6, WinXP]


InfMag ©   (2004-11-07 19:50:00) 

Как допустим из полученного текста c:\folder\file.exe оставить только c:\folder\?


Defunct   (2004-11-07 20:30:00) [1]

да что тут еще что-то думать вот код функций, все здесь однозначно видно:

function ExtractFilePath(const FileName: string): string;
var
 I: Integer;
begin
 I := LastDelimiter(PathDelim + DriveDelim, FileName);
 Result := Copy(FileName, 1, I);
end;

function ExtractFileDir(const FileName: string): string;
var
 I: Integer;
begin
 I := LastDelimiter(PathDelim + DriveDelim, Filename);
 if (I > 1) and (FileName[I] = PathDelim) and
   (not IsDelimiter( PathDelim + DriveDelim, FileName, I-1)) then Dec(I);
 Result := Copy(FileName, 1, I);
end;


Wish   (2004-11-07 20:27:00) [2]

function GetExePath:string;
var s:string;
begin
s:=ExtractFilePath(paramstr(0));
if s[length(s)]='\' then Delete(s,length(s),1);
Result:=s;
end;


Step[B.M.]   (2004-11-07 20:24:00) [3]

Запихнуть путь в строку.
Определить местоположение последнего слэша и выбросить все что за ним находится.


Defunct   (2004-11-07 20:22:00) [4]

KilkennyCat ©   (07.11.04 20:18) [12]

Да бросьте, и проверять ничего не надо. Просто включите логику.

ExtractFileDir - после выполнения этой функции должна работать команда CD (ChDir), соответственно там слеша быть не должно, а значит его там и нет.

ExtractFilePath - после выполнения этой функции, как правило, к результату прибавляется имя файла, соответственно слеш там быть обязан.


KilkennyCat   (2004-11-07 20:18:00) [5]

ну вы меня просто опят запутали :)
ладно, специально потом посмотрю, где и как он убирается или оставляется... Но от комплекса проверять его наличие, похоже, уже не избавлюсь.


GuAV   (2004-11-07 20:13:00) [6]

begin...end ©   (07.11.04 20:09) [10]

Но в зависимости от того корневая ли папка :)


begin...end   (2004-11-07 20:09:00) [7]


> KilkennyCat

Скорее второе, т.к. ExtractFileDir() убирает слэш тоже вроде бы независимо от версии... :-)


KilkennyCat   (2004-11-07 20:07:00) [8]

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


KilkennyCat   (2004-11-07 20:05:00) [9]


> begin...end ©   (07.11.04 19:59) [5]


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


InfMag   (2004-11-07 20:04:00) [10]

Спасибо, испробую...


Zeqfreed   (2004-11-07 20:01:00) [11]

ExtractFilePath(application.datname); ;)

А если по нормальному:

ExtractFilePath(filename);


begin...end   (2004-11-07 19:59:00) [12]


> [3] KilkennyCat ©   (07.11.04 19:54)

Ну если в Application.Exename слэш был, то после ExtractFilePath() он останется. Это от версии винды не зависит. Не остаётся он после ExtractFileDir(), вроде бы.

> [4] InfMag ©   (07.11.04 19:56)

Тогда беда... :-)


InfMag   (2004-11-07 19:56:00) [13]

Блин... А вдруг у меня не exe файл, а например dat какой-нибудь?


KilkennyCat   (2004-11-07 19:54:00) [14]

и я бы еще проверил на наличие последнего слэша... не помню, остается он или нет под некоторыми виндами?


begin...end   (2004-11-07 19:53:00) [15]

ExtractFilePath('c:\folder\file.exe') + '?':-)))

P.S. А чем не устроил мой ответ в соседней ветке?


KilkennyCat   (2004-11-07 19:53:00) [16]

ExtractFilePath(application.exename);


Наверх

Титульная страница Поиск, карта сайта Написать письмо