|
#1
|
|||
|
|||
Путь к файлу
Приветствую.
помогите решить вопрос, бьюсь 3 день. Есть путь к примеру C\:папка1\папка2\файл.txt Мне нужно вывести только папка2\файл.txt Подскажите как это правильно сделать. |
#2
|
||||
|
||||
Код:
procedure TForm1.Button1Click(Sender: TObject); var i: integer; s: string; flg: boolean; begin s:= 'C\:папка1\папка2\файл.txt'; flg:= false; for i := Length(s) downto 1 do begin if (flg) and (s[i] = '\') then begin Edit1.Text:= Copy(s,i+1, Length(s)); Exit; end; if s[i] = '\' then flg:= true; end; end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
dagon81 (08.12.2016)
|
#3
|
||||
|
||||
Вырвать из строки кусок, начиная со второго обратного слеша справа.
Пишу программы за еду. __________________ |
#4
|
||||
|
||||
Цитата:
Код:
s := "c:\folder1\folder2\file" a := s.split(['\']); print a[-1] print a[-2] — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию Последний раз редактировалось M.A.D.M.A.N., 08.12.2016 в 15:24. |
#5
|
|||
|
|||
Спасибо, но не много не то, мне надо из пути к файлу убрать путь к исполняемой программе.
например путь к исполняемой программе I:\code\project\ путь к файлу I:\code\project\Icon\1.ico и из этого пути убрать путь программы. Надеюсь объяснил. |
#6
|
||||
|
||||
Цитата:
Код:
... s:= StringReplace(s,extractfiledir(paramstr(0)),'',[]); ... З.Ы. Оффтоп: Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 08.12.2016 в 15:41. |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
dagon81 (08.12.2016)
|
#7
|
||||
|
||||
Похоже ТС сам запутался) Тогда Copy начиная с Length строки пути к исп. файлу. 1 строчка кода будет.
Пишу программы за еду. __________________ |
#8
|
|||
|
|||
спасибо все попробую
|
#9
|
||||
|
||||
Цитата:
"hello/world/!!!" -> ["hello", "world", "!!!"] http://docwiki.embarcadero.com/Libra...ls.SplitString В ХЕ* версиях встроенная ф-я в виде хелперов (расширения базовых типов). — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
Alegun (09.12.2016)
|
#10
|
|||
|
|||
Цитата:
FYI: Код:
var FileName : Stirng; RelFileName : String; Idx : Integer; begin FileName := 'I:\code\project\Icon\1.ico'; Idx := Length(ExtractFilePath(ParamStr(0))); RelFileName := Copy(FileName,Idx+1,Length(FileName)-Idx); end; |
#11
|
||||
|
||||
Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#12
|
||||
|
||||
Код:
var s: String; begin (* s:=ExtractFilePath(Application.ExeName)+'icons\icon.txt'; *) s:=Copy(s, Length(ExtractFilePath(Application.ExeName))+1, MaxInt-1); Пишу программы за еду. __________________ |
#13
|
||||
|
||||
Цитата:
А вообще, какой-то флейм начался. Если так будет продолжаться, придётся тему закрывать. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#14
|
|||
|
|||
Цитата:
Кстати, да. Причем 'да' на оба утверждения. |
#15
|
||||
|
||||
Еще решение
Совсем забыли про регулярки...
Код:
uses RegularExpressions; ... function GetPartPathOfFile(PathFile: String; Psn: Byte): String; var Match: TMatchCollection; Reg: TRegEx; I: Byte; Res: String; begin Reg := TRegEx.Create('[^\\]+'); if Reg.IsMatch(PathFile) then begin Match := Reg.Matches(PathFile, '[^\\]+', [roIgnoreCase]); I := Psn; while I <> Match.Count do begin Res := Res + Match.Item[i].Value + '\'; Inc(I); end; Delete(Res, Length(Res), 1); end; Result := Res; end; Пример вызова (2-ой параметр означает с какого обратного слеша вернуть строку) Код:
Edit1.Text := GetPartPathOfFile('C\:папка1\папка2\файл.txt', 2); Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете. Последний раз редактировалось Kailon, 10.12.2016 в 12:46. |