Главная страница
    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.042 c
1-1125586034
RzCoDer
2005-09-01 18:47
2005.09.25
NT сервисы


4-1122543654
Amik
2005-07-28 13:40
2005.09.25
как заблочить ХР на доступ?


6-1117775562
Mishenka
2005-06-03 09:12
2005.09.25
Не коннектится FTP сервер.


6-1117279379
KorvinOE
2005-05-28 15:22
2005.09.25
Выставить TimeOut для входящих у IdTCPServer


14-1125323191
БарЛог
2005-08-29 17:46
2005.09.25
Скрипты на СИ - можно ли?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский