![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выбираем только то, что нужно [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);