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

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

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

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

Lomanu4 Оффлайн

Lomanu4

Команда форума
Администратор
Сообщения
1,163
Симпатии
222
Баллы
155
VK


Код:
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.
 
Последнее редактирование:
ЛивАрт Оффлайн

ЛивАрт

Главный модератор
Принятый Кодер
Сообщения
51
Симпатии
15
Баллы
60
Отличный урок!
Пытался прикрутить парсер ссылок, но не смог, парсит только 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?
 
ЛивАрт Оффлайн

ЛивАрт

Главный модератор
Принятый Кодер
Сообщения
51
Симпатии
15
Баллы
60
Сделал всё таки парсер на регулярках :)

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

Lomanu4

Команда форума
Администратор
Сообщения
1,163
Симпатии
222
Баллы
155
VK
Дай код помогу с потоком
 
ЛивАрт Оффлайн

ЛивАрт

Главный модератор
Принятый Кодер
Сообщения
51
Симпатии
15
Баллы
60
Дай код помогу с потоком
Я тут прикинул... Зачем на 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 Оффлайн

Lomanu4

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

ЛивАрт

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

Lomanu4

Команда форума
Администратор
Сообщения
1,163
Симпатии
222
Баллы
155
VK
Сделаю завтро специально для тебя "не понятно потому что с телефона пишу colega"
 
Sascha Оффлайн

Sascha

Заместитель Администратора
Команда форума
Администратор
Сообщения
1,058
Симпатии
273
Баллы
155
Я тоже не против код увидеть скачивания в потоках
 
Lomanu4 Оффлайн

Lomanu4

Команда форума
Администратор
Сообщения
1,163
Симпатии
222
Баллы
155
VK
Sascha Оффлайн

Sascha

Заместитель Администратора
Команда форума
Администратор
Сообщения
1,058
Симпатии
273
Баллы
155
Всё было бы хорошо если я был профи я бы не спрашивал, в вашем видео уроке вы рассказывали что вы расскажите как записать музыку с разным названием.
 
Lomanu4 Оффлайн

Lomanu4

Команда форума
Администратор
Сообщения
1,163
Симпатии
222
Баллы
155
VK
Всё было бы хорошо если я был профи я бы не спрашивал, в вашем видео уроке вы рассказывали что вы расскажите как записать музыку с разным названием.
Будет сделано.
 
Lomanu4 Оффлайн

Lomanu4

Команда форума
Администратор
Сообщения
1,163
Симпатии
222
Баллы
155
VK
Вверх Снизу