Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2005.09.25;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.041 c
14-1125600161
Ego
2005-09-01 22:42
2005.09.25
Для тех, кому нужен профессиональный web-дизан.


6-1117644962
Dok
2005-06-01 20:56
2005.09.25
широковещательный connect


3-1123604223
Punch
2005-08-09 20:17
2005.09.25
Как убрать ненужный "Locate"?


14-1125152413
Гоман
2005-08-27 18:20
2005.09.25
Вопрос про дефективный монитор


14-1125915430
Signate
2005-09-05 14:17
2005.09.25
Opera





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский