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

Вниз

Как извлечь имя файла?   Найти похожие ветки 

 
Well   (2004-04-16 10:02) [0]

Существует ли функция извлечения из полного имени файла имя файла без диска?
Тоесть из C:/DIR1/DIR2/file.ext получить   DIR1/DIR2/file.ext


 
Reindeer Moss Eater ©   (2004-04-16 10:03) [1]

Функция Pos функция Copy


 
Well   (2004-04-16 10:10) [2]

Нет это я незнаю. Мне нужна такая что бы сама все делала!
Тоесть imyabezdiska := udalitdisk(imyasdiskom)
Ну вы можете помочь?


 
Reindeer Moss Eater ©   (2004-04-16 10:13) [3]

Ну так и напиши такую функцию один раз и пользуйся всю жизнь.
А потом передай в наследство детям.


 
Well   (2004-04-16 10:15) [4]

Предыдущий пост не мой. Понимаю, чувство юмора есть у всех...
Я имел ввиду не операции со строками, а стандартные функции типа ExtractFileDir, ExtractFileName, ExtractFileDrive..


 
Reindeer Moss Eater ©   (2004-04-16 10:16) [5]

И что именно ты имел ввиду упоминая эти функции?
То, как переделать их реализацию и заставить возвращать то, что ты хочешь?


 
BlackTr   (2004-04-16 10:17) [6]

ExtractRelativePath("C:/DIR1/DIR2/file.ext","C:/DIR1/DIR2/file.ext")


 
Reindeer Moss Eater ©   (2004-04-16 10:25) [7]

Тогда уж
ExtractRelativePath(ExtractFileDrive(ParamStr(0)),ParamStr(0))


 
Well   (2004-04-16 10:37) [8]

Да, вот это самое и есть!
Спасибо!!!


 
Locker   (2004-04-16 10:43) [9]

type
 TPartType = (ptDisk, ptPath, ptName, ptExt);
 TPartSet = set of TPartType;

function ExtractPartial(a_PartSet: TPartSet; a_sFullName: string: string;
var
 iPos: integer;
begin
 iPos := Pos("\", a_sFullName);
 if (ptDisk in a_PartSet) then
   Result := Copy(a_sFullName, 1, iPos);
 Delete(a_sFullName, 1, iPos);
 iPos := Pos(ExtractFileName(a_sFullName), a_sFullName) - 1;
 if (ptPath in a_PartSet) then
   Result := Result + Copy(a_sFullName, 1, iPos);
 Delete(a_sFullName, 1, iPos);
 iPos := Pos(ExtractFileExt(a_sFullName), a_sFullName) - 1;
 if (ptName in a_PartSet) then
   Result := Result + Copy(a_sFullName, 1, iPos);
 Delete(a_sFullName, 1, iPos);
 if (ptExt in a_PartSet) then
   Result := Result + a_sFullName;
end;

Что-то на подобие этого? Прошу прощения, если где-то что-то не так: просто написал, не проверяя.


 
han_malign ©   (2004-04-16 10:50) [10]

>iPos := Pos("\", a_sFullName);
> if (ptDisk in a_PartSet) then
>   Result := Copy(a_sFullName, 1, iPos);

\\?\C:\...
\\server\shareName\...


 
Locker   (2004-04-16 11:15) [11]

2 han_malign
 В вопросе явно было указано "без диска"; никакого упоминания о сетевом окружении не было.
 Не нравится - перепишите...

Хотя, наверное, проще ткнуть кого-то носом в ошибку, чем добавить:
 iPos := Pos("\\", a_sFUllName);
 if (iPos = 1) then
 begin
   Delete(a_sFullName, 1, 2);
   iPos := Pos("\", a_sFullName);
   Result := "\\" + Copy(a_sFullName, iPos);
   Delete(a_sFullName, iPos);
   iPos := Pos(":", a_sFullName);
   if (iPos <> 0) then
   begin
     Result := Result + Copy(a_sFullName, iPos + 1);
     Delete(a_sFullName, iPos + 1);
   end;
 end
 else
 ...

P.S. Я сегодня злой... очень!



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

Текущий архив: 2004.05.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.057 c
7-1075122260
Thick
2004-01-26 16:04
2004.05.02
Температура процессора


14-1081333732
kombat
2004-04-07 14:28
2004.05.02
Какие сторонние компоненты (наборы) вы используете в работе?


3-1081408036
van20
2004-04-08 11:07
2004.05.02
Как работать с защищенной паролем БД Paradox через ADO?


11-1066225387
.::D.e.M.o.N.i.X::.
2003-10-15 17:43
2004.05.02
MpegAudio Tools


14-1081242454
serge35
2004-04-06 13:07
2004.05.02
Наконец-то азиаты решили написать операционку