Показать сообщение отдельно
Непрочитано 22.08.2012, 16:40   #3
Аватар для Zubastic
ZG troll squad

Автор темы (Топик Стартер) Re: Работа с потоками в delphi

Код:
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;
Собственно вот. Немного обрезал от мусора
Zubastic вне форума Ответить с цитированием