Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.25;
Скачать: CL | DM;

Вниз

Извлечение имени файла из интернет-ссылки   Найти похожие ветки 

 
KonstantinXaker(KX)   (2005-05-22 15:48) [0]

Здорово!
Есть ссылка "http://www.mota.ru/space/img/space_087.jpg"
Каким образом мне извлечь название самого рисунка "space_087.jpg" с помощью Delphi?
P.S.: И не обязательно рисунка, а также любых файлов!


 
tesseract   (2005-05-25 10:29) [1]

Посмотри на строку и найди символ стоящий перед именем файла.


 
KonstantinXaker(KX)   (2005-05-25 20:13) [2]

Каким образом искать я могу сформулировать, а вот как на Delphi написать - вот в этом вопрос!


 
Anatoly Podgoretsky ©   (2005-05-25 20:19) [3]

ExtractFileName попробовать


 
KonstantinXaker(KX)   (2005-05-25 20:59) [4]

ExtractFileName для интернет-ссылок не работает...


 
Алексей_К   (2005-05-25 22:55) [5]

Попробуй это:

function ExtrFnm(const FileName: string): string;
var tmp:String;
begin
tmp:=FileName;
while pos("/",tmp)>0 do
       delete(tmp,1,pos("/",tmp));
result:=tmp;
end;


 
KonstantinXaker(KX)   (2005-05-26 03:13) [6]

Огромное спасибо! Всё работает!!!


 
Alex Konshin ©   (2005-05-26 03:26) [7]

Ну все, держитесь, сейчас хакер весь интернет похакает.
:)


 
KonstantinXaker(KX)   (2005-05-26 17:09) [8]

Alex Konshin ©
Класная шутка, нечего сказать :-))


 
XProger ©   (2005-05-27 00:28) [9]

Алексей_К, намного шустрее будет

for i := Length(url) downto 1 do
if url[i] = "/" then
 begin
 Name := Copy(url, i + 1, Length(url));
 break;
 end;


 
KonstantinXaker(KX)   (2005-05-27 22:02) [10]

XProger ©
у меня этот код не пашет!


 
Medved ©   (2005-05-27 22:02) [11]

Это была моя первая идея...  но
А если ссылка как на эту страницу?

http://delphimaster.net/view/6-1116762539/

или ещё сложнее???


 
Anatoly Podgoretsky ©   (2005-05-27 22:08) [12]

KonstantinXaker(KX)   (27.05.05 22:02) [10]
Что же так, код рабочий, значит URL неверный?


 
KonstantinXaker(KX)   (2005-05-29 02:18) [13]

Medved ©  
Так что тебе нужно получить из этой ссылки?
forum.pl?id=1116762539&n=4
Если это, то пишешь следующее (было написано выше):

function ExtrFnm(const FileName: string): string;
var tmp:String;
begin
tmp:=FileName;
while pos("/",tmp)>0 do
      delete(tmp,1,pos("/",tmp));
result:=tmp;
end;


edit2.Text:=ExtrFnm(edit1.Text);


 
Anatoly Podgoretsky ©   (2005-05-29 10:01) [14]

А с этой
http://www.delphimaster.ru
и с этой
http://www.delphimaster.ru/
или с этой
http://www.delphimaster.ru/file.txt?id=1116762539&n=4
а еще лучше с этой
http://www.delphimaster.ru/file1.txt?id=1116762539&n=4&u=http://www.delphimaster.ru/file2.txt


 
Antonn ©   (2005-05-29 11:45) [15]

ух, видали мой велосипед?
:)

function Get_URL2filename(_URL:string):string;
var i,i_s:integer; _s:string; _b:boolean;
begin
i_s:=-1; _b:=false;
result:="";
for i:=1 to length(_url) do begin
 if (_url[i]=".") then _b:=true;
 if (_url[i]="/")and(_b) then
  i_s:=i;
end;
if i_s<0 then exit;
_s:=copy(_url, i_s+1, length(_url)-i_s);
i_s:=pos(".",_s);
result:=(_s);
_s:=_s+" ";
for i:=i_s to length(_s) do
 if pos(_s[i],"/=+"?|:#@"#39)>0 then begin
  result:=trim(copy(_s, 1, i_s)+copy(_s, i_s+1, i-i_s-1));
  exit;
 end;
end;


 
False_Delirium ©   (2005-05-29 15:18) [16]

function ExtractURLFileName(const Url : string ; const DetermFileByDot : Boolean = True) : string ;
Var
 Idx : SmallInt ;
 LimitIdx : SmallInt ;
 DotFound : Boolean ;
begin
 Result := "" ;
 DotFound := not DetermFileByDot ;
 LimitIdx := Pos(#63, Url) - 1;
 if LimitIdx = -1 then
 begin
   LimitIdx := Length(Url) ;
 end ;
 if (Url[LimitIdx] <> #47) and (LimitIdx > 6) then
 begin
   Idx := LimitIdx ;
   while Idx > 6 do
   begin
     Dec(Idx) ;
     if Url[Idx] = #46 then
       DotFound := True ;
     if Url[Idx] = #47 then
       break
   end ;
   if (Idx > 6) and DotFound and (Url[Idx - 1] <> #47) then
     Result := copy(Url, Idx + 1, LimitIdx - Idx)
 end
end ;

На корректность URL не проверяет и не самая быстрая.


 
Pearled   (2005-05-30 13:55) [17]

function ExtractUrlFileName(URL: string): string;
var
  i: integer;
begin
if pos("?",url)>0 then
  delete(url,pos("?",url),1000);
result:= url;
for i:= length(url) downto 1 do
  if url[i] = "/" then
     begin
     result:= copy(url,i+1,1000);
     break;  
     end;
end;


 
False_Delirium ©   (2005-05-30 20:52) [18]

Pearled   (30.05.05 13:55) [17]

Работает медленно и неправильно.. :)

как и

Antonn ©   (29.05.05 11:45) [15]


 
Alexander Panov ©   (2005-05-30 21:49) [19]

Самое простое - пройти в с конца строки до первого попавшегося слеша "/".


 
Anatoly Podgoretsky ©   (2005-05-30 22:11) [20]

http://www.delphimaster.ru


 
Alexander Panov ©   (2005-05-30 22:23) [21]

Anatoly Podgoretsky ©   (30.05.05 22:11) [20]

Анатолий, топик прочитай;)
Там тип ссылки вполне конкретный приведен-)


 
False_Delirium ©   (2005-05-30 22:37) [22]

Alexander Panov ©   (30.05.05 22:23) [21]

www.delphimaster.ru/file1.txt?id=1116762539&n=4&u=http://www.delphimaster.ru/file2.txt


 
Alexander Panov ©   (2005-05-30 22:40) [23]

False_Delirium ©   (30.05.05 22:37) [22]

ну так извлекаем и получаем file2.txt -)


 
False_Delirium ©   (2005-05-30 22:48) [24]

Alexander Panov ©   (30.05.05 22:40) [23]

Так а зачем нам файл в параметрах :)
Нам нужен file1.txt :)


 
just_me   (2005-05-30 22:50) [25]

var
URI: TidURI;
begin
URI := TidURI.Create("http://www.mota.ru/space/img/space_087.jpg");
try
  Label1.Caption := URI.Document;
finally
  URI.Free;
end;
end;


 
Alexander Panov ©   (2005-05-30 22:57) [26]

False_Delirium ©   (30.05.05 22:48) [24]

Дык тоже на [21] обрати внимание-)


 
False_Delirium ©   (2005-05-30 23:04) [27]

Alexander Panov ©   (30.05.05 22:57) [26]
 Если все запросы такого вида, то подойдёт [3] :)
 Если любого вида, то [16] :)


 
Anatoly Podgoretsky ©   (2005-05-30 23:14) [28]

KonstantinXaker(KX)   (25.05.05 20:59) [4]
Утверждает что нет, слеши то другие.


 
False_Delirium ©   (2005-05-30 23:31) [29]

Anatoly Podgoretsky ©   (30.05.05 23:14) [28]
 LastDelimiter и Copy ? Больше собственно ничего и нет в
 ExtractFileName.

 А поменять там первый параметр LastDelimiter.
 Лень, наверное. :)


 
Anatoly Podgoretsky ©   (2005-05-30 23:52) [30]

Мне лень, поскольку мне не нужно, а ему я предложил попробовать



Страницы: 1 вся ветка

Текущий архив: 2005.09.25;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.045 c
4-1122801708
Pasha L
2005-07-31 13:21
2005.09.25
Как получить список запущенных приложений


2-1124122524
Андрей Молчанов
2005-08-15 20:15
2005.09.25
проверить, подходит ли файл заданной маске


4-1123053208
Wind_007
2005-08-03 11:13
2005.09.25
Wab камеры


14-1125469229
syte_ser78
2005-08-31 10:20
2005.09.25
Совместимость фирменной эпсоновской краски с другими.


14-1125405446
AlexG
2005-08-30 16:37
2005.09.25
Сколько стоит Delphi 6 лицензионный?