Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdHTTP, StdCtrls, ShellAPI, inifiles, ExtCtrls,
IdAntiFreezeBase, IdAntiFreeze, Math;
type
TSaveFile = class(TThread)
public
stream:TMemoryStream;
path:string;
procedure Execute;override;
constructor Create(stream:TMemoryStream; path:string);
end;
TForm1 = class(TForm)
StatusBar1: TStatusBar;
IdHTTP1: TIdHTTP;
{ Class declarations }
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
ver,
paths,
filed:string;
implementation
{$R *.dfm}
procedure TSaveFile.Execute;
begin
Stream.SaveToFile(path); //сохраняем данные из потока на жестком диске
end;
//Вызов конструктора родительского класса
constructor TSaveFile.Create(Stream:TMemoryStream; path:string);
begin
inherited Create(True); //Поток создаем в состоянии «Приостановлен»
Stream:=Stream; //Инициализация параметров
path:=path;
FreeOnTerminate:=True; //Поток освободит ресурсы при окончании работы
Self.Priority:=tpHighest; //Стартуем с высоким приоритетом
Resume; //Переводим поток в состояние «Активен»
end;
procedure TForm1.Download(obj,path:string);
var Stream:TMemoryStream;
SaveFile:TSaveFile;
begin
Stream:=TMemoryStream.Create; //выделение памяти под переменную
try
//obj:='http://files-w2.asterios.tm:88/high_five_asterios.7z';
idHTTP1.Get(obj, Stream); //загрузка в поток данных из сети
SaveFile:=TSaveFile.Create(stream,path);
Application.ProcessMessages;
except
//
end;
Stream.Free; //освобождаем память
end;
Собственно вот. Немного обрезал от мусора