Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.021 c
1-1081944980
AMogil
2004-04-14 16:16
2004.05.02
Предварительная обработка строк перед передачей в Format


1-1081969220
/\_A_M_E_P
2004-04-14 23:00
2004.05.02
Проблема при минимизации окна.


14-1081256066
Maxim Vetera
2004-04-06 16:54
2004.05.02
Print Scrn -> На принтер


3-1081397756
Алексей 2
2004-04-08 08:15
2004.05.02
запрос по двум связанным таблицам


1-1082206330
Viktor
2004-04-17 16:52
2004.05.02
Проверить объект на существование




   Наверх