![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите, как вырезать часть строки до слеша?
Сергей © (2008-05-19 15:34:00)Есть путь к файлу (c:\vcli\kript_file\Uncript\MLS2008.05.19\), нужно вырезать часть строки до второго слеша справа чтобы получилось c:\vcli\kript_file\Uncript. Пути будут меняться. Если не сложно напишите код или ссылку. Спасибо.
Сергей (2008-05-19 17:13:00) [1]Спасибо всем, за помощь.
Werewolf-Prankster (2008-05-19 15:53:00) [2]Виноват, это как раз слева.
Попробуем еще раз )
var i,sl,tmp:integer; ulr1,url2:string //sl - счетчик слешей, url1,url2, где 1-й начальное значение пути, 2-й результат
sl:=0;
url1:=(путь);
for i:=length(url1 down to 1 do
begin
if url1[i]='/' then
sl:=sl+1
if sl=2 then
tmp:=i;
end; //узнаем номер символа в котором находится слеш
for i:=1 to tmp do
url2[i]:=url1[i];//обрезаем урл
Alarm (2008-05-19 15:46:00) [3]Сначала необходимо определиться со сторонами (право и лево). Из примера совсем не следует, что это "часть строки до второго слеша справа ".
А по существу поможет:
Copy(..., Pos(...), ...);
Werewolf-Prankster (2008-05-19 15:43:00) [4]var i,sl:integer; ulr1,url2:string //sl - счетчик слешей, url1,url2, где 1-й начальное значение пути, 2-й результат
sl:=0;
url1:=(путь);
for i:=1 to length(url1) do
if sl<3 then
begin
url2[i]:=url1[i];
if url1[i]:='/' then
sl:=sl+1;
end;
Теперь в переменной url2 у тебя находится нужный адресс.
Virgo_Style (2008-05-19 15:41:00) [5]ExtractFileDir( ExcludeTrailingBackslash( ... ) );
Это если "я его слепила из того, что было". Оптимально в плане скорости написания, а не быстродействия :-) Иначе - считать слеши справа налево, найдя второй - обрезать все, что правее.