Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как из ссылки(URL), выделить имя файла? [D7, D2005, XP]


Stepper ©   (2008-04-02 12:25:00) 

Всем привет!

Есть Едит в него введена ссылка: http://mysite.ru/software/myproga.exe

Как из данной строки - получить (пропарсив) имя файла myproga.exe?


palva   (2008-04-02 22:11:00) [1]

> А как для сего реализовать?
Как-нибудь так:
Поискать символ # а потом отбросить этот символ и все, что после него следует.
Поискать символ ? а потом отбросить этот символ и все, что после него следует.


Stepper   (2008-04-02 21:26:00) [2]

Реализация:

function DelUrlStr(Url: string): string;
var
 Pos: Integer;
begin
 Pos := Length(Url);
 while Url[Pos] '/' do
   Dec(Pos);
  Result := Copy(Url, Pos + 1, Length(Url) - Pos + 1);
end;


Функция корректно возвращает имя файла myproga.exe

А как для сего реализовать?
> palva ©   (02.04.08 14:38) [9]
>
> URL может включать себя: 1) :номер порта 2) #якорь 3) ?параметры&произвольного&вида


palva   (2008-04-02 14:38:00) [3]

Надо читать доки.
URL может включать себя: 1) :номер порта 2) #якорь 3) ?параметры&произвольного&вида
Кроме того в URL может отсутствовать имя файла
Так что, вообще говоря, функция должна быть сложной.
Если автору нужен функция для частного случая, тогда он должен написать полную спецификацию этого случая.


easy   (2008-04-02 14:13:00) [4]

 while pos('/', s)<>0 do
   delete(s,1,pos('/', s));
 showmessage(s);


Семеныч   (2008-04-02 14:10:00) [5]

> Stepper   (02.04.08 14:05) [4]

Попробуйте:
ExtractFileName(StringReplace(URL, '/', PathDelimiter, [rfReplaceAll]))


Kolan   (2008-04-02 14:09:00) [6]

Можно для такой строки вообще с конца в ч\цикле пройти до первой '/'.


Reindeer Moss Eater   (2008-04-02 14:09:00) [7]

для начала поиск последнего слэша с помошью StrRScan


Stepper   (2008-04-02 14:05:00) [8]

Вот что нашел:

...
 if Pos('http://', URL) > 0 then Delete(Url, 1, 7);
 Result := Copy(Url, 1, Pos('/', Url) - 1);
 if Result = '' then Result := URL + #0;
...


Из строки http://mysite.ru/software/myproga.exeполучаем mysite.ru

Кто поможет оптимизировать под мой сабж? Заранее благодарен!


Stepper   (2008-04-02 12:29:00) [9]


> Kolan ©   (02.04.08 12:28) [2]


Окей!


> Ega23 ©   (02.04.08 12:27) [1]


Спс!


Kolan   (2008-04-02 12:28:00) [10]

Лучьше используй рег. выражения. В Delphi для них умные люди написали модуль RegExpr.


Ega23   (2008-04-02 12:27:00) [11]

Pos, copy + F1


Наверх

Титульная страница Поиск, карта сайта Написать письмо