Процесс Загруски Файла

Тема в разделе "Delphi - Сети", создана пользователем prosto4ok, 26 янв 2013.

  1. prosto4ok

    prosto4ok New Member

    Регистрация:
    17 янв 2012
    Сообщения:
    4
    Симпатии:
    0
    Как отобразить на ProgressBar процесс загрузки файла?
    нашел код, пробую но ругаеться на
    Код (Text):
    IDHTP.OnWorkBegin := WorkBegin;
    IDHTP.OnWorkEnd := WorkEnd;
    IDHTP.OnWork := Work;
    вот код
    Код (Text):
     private
    FWorkCount: Integer;
    FWorkCountMax: Integer;
    public
    procedure WorkBegin(ASender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer);  
    procedure WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
    procedure Work(ASender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer);
    end;

    function ConvertBytes(Bytes: Integer): String;
    begin
    if Bytes div 1024 < 1 then Result := FormatFloat('0.00 "Byte"', Bytes);
    if Bytes div 1024 >= 1 then Result := FormatFloat('0 "KB"', Bytes/1024);
    if Bytes div 1024 >= 1024 then Result := FormatFloat('0.00 "MB"', Bytes/1048576);
    if Bytes div 734003200 >= 1 then Result := FormatFloat('0.00 "GB"', Bytes/1073741824);
    end;

    procedure TForm1.WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
    const AWorkCountMax: Integer);
    begin        
    FWorkCount := 0;
    FWorkCountMax := AWorkCountMax;
    ProgressBar.Position := 0;
    InfoLabel.Caption := Format('Размер: %s/%s',
    [ConvertBytes(FWorkCount), ConvertBytes(FWorkCountMax)]);
    end;

    procedure TForm1.WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
    begin
    InfoLabel.Caption := 'Завершение загрузки';
    end;

    procedure TForm1.Work(ASender: TObject; AWorkMode: TWorkMode;
    const AWorkCount: Integer);
    begin
    FWorkCount := AWorkCount;
    ProgressBar.Position := FWorkCount * 100 div FWorkCountMax;
    InfoLabel.Caption := Format('Размер: %s/%s',
    [ConvertBytes(FWorkCount), ConvertBytes(FWorkCountMax)]);
    end;
    перед IDHTP.Get(...)
    поставил
    Код (Text):
     IDHTP.OnWorkBegin := WorkBegin;
    IDHTP.OnWorkEnd := WorkEnd;
    IDHTP.OnWork := Work;
    на него и ругаеться
    помогите плизз
     
  2. -master-

    -master- Well-Known Member

    Регистрация:
    14 янв 2012
    Сообщения:
    629
    Симпатии:
    19
    Главное не обращать внимание на ругательства.
     
  3. sinkopa

    sinkopa Well-Known Member

    Регистрация:
    17 июн 2009
    Сообщения:
    344
    Симпатии:
    9
    Ну... экстрасенсы на другом форуме...
    (1) Что это у Вас за куски кода? над private (то что Вы нам не показали) это что было? Form1?
    (2) Что Вы имеете в виду под словом "ругается"? Ошибка компилятора? что именно пишет?
    (3) в секции uses прописано?
    Код (Delphi):
    IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP;
    (4) А сам IDHTP у Вас где и как объявлен? В том же юните что и Form1? И в каком месте вызов IDHTP.Get(...) у Вас?
    Может следует в uses и модуль с Form1 включить, и вот так прописывать?
    Код (Delphi):
    IDHTP.OnWorkBegin := Form1.WorkBegin;
    IDHTP.OnWorkEnd := Form1.WorkEnd;
    IDHTP.OnWork := Form1.Work;
     
Загрузка...

Поделиться этой страницей