Что нового
  • Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Как скачать музыку с помощью Delphi | How to download music with Delphi

Lomanu4

Команда форума
Администратор
Регистрация
1 Мар 2015
Сообщения
1,184
Баллы
155


Код:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdComponent, IdAntiFreezeBase,
  Vcl.IdAntiFreeze, IdBaseComponent, IdTCPConnection, IdTCPClient, IdHTTP,
  sSkinManager, Vcl.ComCtrls, acProgressBar, Vcl.StdCtrls, sButton, sEdit;

type
  TForm1 = class(TForm)
    sEdit1: TsEdit;
    sButton1: TsButton;
    sProgressBar1: TsProgressBar;
    sSkinManager1: TsSkinManager;
    IdHTTP1: TIdHTTP;
    IdAntiFreeze1: TIdAntiFreeze;
    procedure IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
      AWorkCount: Int64);
    procedure IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
      AWorkCountMax: Int64);
    procedure sButton1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Url:TMemoryStream;
implementation

{$R *.dfm}

procedure TForm1.IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCount: Int64);
begin
sProgressBar1.Position:=AWorkCount;
end;

procedure TForm1.IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCountMax: Int64);
begin
sProgressBar1.Position:=0;
sProgressBar1.max:=AWorkCountMax;
end;

procedure TForm1.sButton1Click(Sender: TObject);
begin
url:=TMemoryStream.Create;

try
  IdHTTP1.Get('',Url);
Url.SaveToFile('—каченый файл.mp3');
finally
url.Free;
end;

end;

end.
 
Последнее редактирование:

ЛивАрт

Главный модератор
Принятый Кодер
Регистрация
10 Апр 2015
Сообщения
51
Баллы
60
Возраст
30
Отличный урок!
Пытался прикрутить парсер ссылок, но не смог, парсит только 1й url, и останавливается.
Пользовался функцией:
Код:
function Pars(T_, ForS, _T: string): string;
var
  a, b: integer;
begin
  Result := '';
  if (T_ = '') or (ForS = '') or (_T = '') then  Exit;
  a := Pos(T_, ForS);
  if a = 0 then    Exit
  else  a := a + Length(T_);

  ForS := Copy(ForS, a, Length(ForS) - a + 1);
  b := Pos(_T, ForS);
  if b > 0 then Result := Copy(ForS, 1, b - 1);
end;
Как заставить продолжать поиск по html?
 

ЛивАрт

Главный модератор
Принятый Кодер
Регистрация
10 Апр 2015
Сообщения
51
Баллы
60
Возраст
30
Сделал всё таки парсер на регулярках :)

Теперь пытаюсь сделать загрузку файлов по списку из мемо, но ничего не получается. Программа виснет... и не грузит.
Потоки слишком сложно, даже незнаю как быть.
Может подскажите как реализовать, чтобы грузил файлы по ссылкам из мемо?
 

ЛивАрт

Главный модератор
Принятый Кодер
Регистрация
10 Апр 2015
Сообщения
51
Баллы
60
Возраст
30
Дай код помогу с потоком
Я тут прикинул... Зачем на 10 треков потоки? Пущай по порядку грузятся=) Но блин опять беда, посмотрите чего то не хватает, наверное условия окончания скачки файла и переход к след ссылке.
Код:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdAntiFreezeBase, Vcl.IdAntiFreeze,
  IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP,
  sSkinManager, Vcl.ComCtrls, acProgressBar, Vcl.StdCtrls, sButton, sLabel,
  sEdit,RegExpr;

type
  TForm1 = class(TForm)
    sEdit1: TsEdit;
    sLabel1: TsLabel;
    sButton1: TsButton;
    sProgressBar1: TsProgressBar;
    sSkinManager1: TsSkinManager;
    IdHTTP1: TIdHTTP;
    IdAntiFreeze1: TIdAntiFreeze;
    sEdit2: TsEdit;
    procedure IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
      AWorkCount: Int64);
    procedure IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
      AWorkCountMax: Int64);
    procedure sButton1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  URL:TMemoryStream;
  r : TRegExpr;

implementation

{$R *.dfm}

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
r.Free;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
r := TRegExpr.Create;
end;

procedure TForm1.IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCount: Int64);
begin
sProgressBar1.Position:=AWorkCount;
end;

procedure TForm1.IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCountMax: Int64);
begin
sProgressBar1.Position:=0;
sProgressBar1.Max:=AWorkCountMax;
end;

procedure TForm1.sButton1Click(Sender: TObject);
var
html: string;
i:integer;
ssilka: string;
begin
//Получаем HTML код сайта в переменную html и мемо поле
html:=IdHTTP1.Get(sEdit1.Text);
URL:=TMemoryStream.Create;
r.Expression:='http://wz5.101.ru/(.*?)mp3';
for I := 0 to 10 do
if r.Exec (html) then begin
                           sEdit2.Text:=r.Match[0];
                           Delete(html,1,r.MatchPos[0]+10);

                           try
                           IdHTTP1.Get(sEdit1.Text,URL);
                           URL.SaveToFile('Скачанный файл.mp3');
                           finally
                           URL.Free;
                           end;
                           end;

                           r.Expression:='http://wz5.101.ru/(.*?)mp3';
                      end;






end.
 

Lomanu4

Команда форума
Администратор
Регистрация
1 Мар 2015
Сообщения
1,184
Баллы
155
Она будет тупить если не будешь делать в потоках, чтобы скачивало весь файл делай с синхронизации. То есть когда заполняеться бар на 100 сразу синхронизируй с другим потоком ставь сразу бар на ноль и все заново.
 

ЛивАрт

Главный модератор
Принятый Кодер
Регистрация
10 Апр 2015
Сообщения
51
Баллы
60
Возраст
30
Она будет тупить если не будешь делать в потоках, чтобы скачивало весь файл делай с синхронизации. То есть когда заполняеться бар на 100 сразу синхронизируй с другим потоком ставь сразу бар на ноль и все заново.
Написано по русски, но нифига не понимаю. Есть ли на форуме уроки по синхронизации и потокам?
 

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,058
Баллы
155
Возраст
46
Я тоже не против код увидеть скачивания в потоках
 

Lomanu4

Команда форума
Администратор
Регистрация
1 Мар 2015
Сообщения
1,184
Баллы
155

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,058
Баллы
155
Возраст
46
Всё было бы хорошо если я был профи я бы не спрашивал, в вашем видео уроке вы рассказывали что вы расскажите как записать музыку с разным названием.
 

Lomanu4

Команда форума
Администратор
Регистрация
1 Мар 2015
Сообщения
1,184
Баллы
155
Всё было бы хорошо если я был профи я бы не спрашивал, в вашем видео уроке вы рассказывали что вы расскажите как записать музыку с разным названием.
Будет сделано.
 

Lannar

Новичок
Регистрация
10 Янв 2018
Сообщения
11
Баллы
8
Возраст
30
Попробовал получилось ,жаль накрылсяBlush_ проэктик
 

Lomanu4

Команда форума
Администратор
Регистрация
1 Мар 2015
Сообщения
1,184
Баллы
155
Вверх