Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
1 / 1 / 5
Регистрация: 28.03.2013
Сообщений: 299
1

Скачать файлы по очереди

04.07.2014, 17:33. Показов 1243. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть длинная строка содержащая ссылки через запятую, пример:

PHP
1
http://qwe/132.txt, http://qwe/232.txt, http://qwe/332.txt
Нужно скачать эти все файлы по очереди.

Разпаршиваю так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
var
  s: string;
  URLList: TStringList;
begin
  s := 'http://qwe/132.txt, [url]http://qwe/232.txt[/url], [url]http://qwe/332.txt';
  URLList := TStringList.Create;
  URLList.Delimiter := ',';
  URLList.DelimitedText := StringReplace(s, ' ', '', [rfReplaceAll]);
  MessageBox(Handle, PChar(URLList[0]), '', MB_OK);
  URLList.Free;
end;
Тобишь URLList[0] - http://qwe/132.txt
URLList[1] - http://qwe/232.txt

А как скачать фалы?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.07.2014, 17:33
Ответы с готовыми решениями:

Качать файлы по очереди
Вот: https://www.cyberforum.ru/attachment.php?attachmentid=411431&stc=1&d=1402849776 Есть такая...

PlaySound: По очереди воспроизвести медиа-файлы
Добрый день. Хочу по очереди воспроизвести медиа файлы, но проигрывается только последний код...

В первой очереди найти максимальный элемент и за ним вставить элементы второй очереди
задание:Создать две очереди из случайных целых чисел. В первой найти максимальный элемент и за ним...

Заменить по очереди три слова test по очереди тремя строками из переменной Arr.Text
Есть 3 строки в переменной Arr.Text (переменная типа TStringList) Есть 3 слова test в Memo1.Text ...

4
Фрилансер
73 / 73 / 51
Регистрация: 25.10.2011
Сообщений: 317
04.07.2014, 21:16 2
Лучший ответ Сообщение было отмечено EEjester как решение

Решение

Delphi
1
2
3
4
5
6
7
function ExtractUrlFileName(const AUrl: string): string;
  var
    i: Integer;
  begin
    i := LastDelimiter('/', AUrl);
   Result := Copy(AUrl, i + 1, Length(AUrl) - (i));
  end;
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var     
  stream : TFileStream;
  http : TIdHTTP;
begin
 http := TIdHTTP.Create(nil);
 stream := TFileStream.Create(ExtractUrlFileName(URLList[0]), fmCreate);
 try
    http.get(URLList[0], stream);
finally
    FreeAndNil(http);
    FreeAndNil(stream);
end;
 
end;
1
1 / 1 / 5
Регистрация: 28.03.2013
Сообщений: 299
04.07.2014, 22:46  [ТС] 3
спасибо огромное. но скачать то файл я могу скачать, задача скачать все файлы по очереди... знаю что нужно как то в цикл это всё загонять. но увы пока что не научился этому. может подскажете как правильно нужно?
0
Фрилансер
73 / 73 / 51
Регистрация: 25.10.2011
Сообщений: 317
04.07.2014, 22:59 4
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
function ExtractUrlFileName(const AUrl: string): string;
var
  i: Integer;
begin
    i := LastDelimiter('/', AUrl);
   Result := Copy(AUrl, i + 1, Length(AUrl) - (i));
end;
 
procedure DownloadFile(url:string);
var
  stream : TFileStream;
  http : TIdHTTP;
begin
 http := TIdHTTP.Create(nil);
 stream := TFileStream.Create(ExtractUrlFileName(url), fmCreate);
 try
    http.get(url, stream);
finally
    FreeAndNil(http);
    FreeAndNil(stream);
end;
 
end;
 
 
procedure TForm1.Buttonbtn1Click(Sender: TObject);
var
  s: string;  i:Integer;
  URLList: TStringList;
begin
  s := 'http://qwe/132.txt, [url]http://qwe/232.txt[/url], [url]http://qwe/332.txt';[/url]
  URLList := TStringList.Create;
  URLList.Delimiter := ',';
  URLList.DelimitedText := StringReplace(s, ' ', '', [rfReplaceAll]);
  for i:=0 to URLList.Count-1 do
   DownloadFile(URLList[i]);
  URLList.Free;
end;
1
1 / 1 / 5
Регистрация: 28.03.2013
Сообщений: 299
04.07.2014, 23:19  [ТС] 5
Всем спасибо, почитал про циклы, разобрался сам. Сделал так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
procedure TForm1.Button1Click(Sender: TObject);
var
  n : Integer;
 
  stream : TFileStream;
  http : TIdHTTP;
begin
  ListURL := 'http://www.whiteh.gov/robots.txt, [url]http://whate.nu/123/fes/m45r.exe';[/url]
  URLList := TStringList.Create;
  URLList.Delimiter := ',';
  URLList.DelimitedText := StringReplace(ListURL, ' ', '', [rfReplaceAll]);
 
  n := URLList.Count;
 
  ShowMessage(IntToStr(n));
 
  http := TIdHTTP.Create(nil);
 
  While (Progress <> n)  Do
  begin
    ShowMessage('start download'+inttostr(Progress));
 
    stream := TFileStream.Create(ExtractUrlFileName(URLList[Progress]), fmCreate);
    http.get(URLList[Progress], stream);
 
    ShowMessage(IntToStr(Progress));
 
    Progress := Progress + 1;
  end;
 
  ShowMessage('OKKK');
 
  FreeAndNil(http);
  FreeAndNil(stream);
  URLList.Free;
Добавлено через 1 минуту
Спасибо еще раз огромное! Сделаю вашим способом.
0
04.07.2014, 23:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.07.2014, 23:19
Помогаю со студенческими работами здесь

Сделать макрос, находящий все файлы .txt и открывающий эти файлы по очереди
Надо сделать макрос в vba excel , чтобы он находил все файлы txt и открывал после нажатие ок, все...

Проиграть по очереди wav файлы
DWORD fdwSound = SND_ASYNC | SND_FILENAME; PlaySound(&quot;Sound/&quot;1111.wav&quot;,NULL,fdwSound); Так я...

Скачать файлы с FTP-сервера и закачать файлы на FTP-сервер
Сдравствуйте, как скачать и закачать файлы на ftp сервер без искажения и повреждения всех расшений,...

Как загрузить файлы с сервера по очереди
Как реализовать загрузку файлов по очереди? Язык Kotlin: class PreviewPresenterImpl ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru