Главная страница
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.022 c
6-1079023118
Leopold
2004-03-11 19:38
2004.05.02
D6 как оправить сообщение через smtp с уведомлением о доставке ?


4-1078409381
Kreon
2004-03-04 17:09
2004.05.02
ScaleViewportExtEx, логические единицы - как их изменять?


8-1075150366
Builder
2004-01-26 23:52
2004.05.02
Эффект


1-1082100085
ZDDR
2004-04-16 11:21
2004.05.02
Locker


1-1082098039
sapsi
2004-04-16 10:47
2004.05.02
Размеры и положения окна в OpenDialog