Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 28.11.2009, 01:17   #1
Kyran29
Пользователь
 
Аватар для Kyran29
 
Регистрация: 17.08.2009
Сообщений: 14
Восклицание Закачка файла происходит в отдельном потоке.

Подскажите, пожалуйста, как отразить весь процесс закачки файла, с помощью компонента TProgressBar .
Вывести текст Загружено - (столько-то МБ) компонент TLabel (Label2).
По событию Button2Click - отменить закачку файла. (Остановить поток)


Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls,URLMon,Wininet;

type
  TForm1 = class(TForm)
    ProgressBar1: TProgressBar;
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }

  public
    { Public declarations }
end;
 TLoadThread = class(TThread)
protected
  FResult:String;
  procedure Execute; override;
  procedure ShowResult;
end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

 function GetUrlInfo(const dwInfoLevel: DWORD; const FileURL: string):string;
var
  hSession, hFile: hInternet;
  dwBuffer: Extended;  
  dwBufferLen, dwIndex: DWORD;
begin
  Result := '';
  hSession := InternetOpen('Загрузка файла  "kav9.0.0.736ru.exe"',
                           INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  if Assigned(hSession) then begin
    hFile := InternetOpenURL(hSession, PChar(FileURL), nil, 0,
                             INTERNET_FLAG_RELOAD, 0);
    dwIndex  := 0;
    dwBufferLen := 20;
    if HttpQueryInfo(hFile, dwInfoLevel, @dwBuffer, dwBufferLen, dwIndex)
      then Result := PChar(@dwBuffer);
    if Assigned(hFile) then InternetCloseHandle(hFile);
    InternetCloseHandle(hsession);
  end;
end;

function DownloadFile(SourceFile, DestFile: string): Boolean;
begin
  try
    Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, nil) = 0;
  except
    Result := False;
  end;
end;

{ TLoadThread }

procedure TLoadThread.Execute;
const
  SourceFile = 'http://downloads.kaspersky-labs.com/trial/registered/8NGILSWTCHAPVSJ1NTX8/kav9.0.0.736ru.exe ';
  DestFile = 'c:\kav9.0.0.736ru.exe ';
begin
  if DownloadFile(SourceFile, DestFile) then
    FResult:= 'Файл загружен!'
  else
    FResult:= 'Ошибка при загрузке - '+ SourceFile;
    Synchronize(ShowResult);

end;

procedure TLoadThread.ShowResult;
begin
  ShowMessage(FResult);
end;

procedure TForm1.FormActivate(Sender: TObject);
var
i : Real;
begin
 //Запрашиваем размер файла с сервера
 i := StrToFloat( GetUrlInfo(HTTP_QUERY_CONTENT_LENGTH,'http://downloads.kaspersky-labs.com/trial/registered/8NGILSWTCHAPVSJ1NTX8/kav9.0.0.736ru.exe'));
end;

procedure TForm1.Button1Click(Sender: TObject);
var
lt:TLoadThread;
begin
lt:=TLoadThread.Create(False);
lt.FreeOnTerminate:=True;
lt.Resume;

end;
procedure TForm1.Button2Click(Sender: TObject);
begin

end;

end.
Kyran29 вне форума
Старый 28.11.2009, 01:19   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

http://www.programmersforum.ru/showthread.php?t=71344
Свяжитесь с ТС.
mihali4 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с созданием окна(CreateWindow) в отдельном потоке Sc0rp Win Api 4 26.03.2009 22:49
закачка файла отдельным потоком. ZeitGeist7 Общие вопросы Delphi 12 26.02.2009 20:23
Закачка файла с ссылки Titan123 Работа с сетью в Delphi 5 20.10.2008 13:25
Закачка файла или как не укачатся Dj_smart Софт 8 02.10.2008 09:39
Запрос к БД в отдельном потоке (Thread) tyrell lab БД в Delphi 1 14.06.2007 08:42