thttpgetex.h

来自「一个C++的断点续传和多线程下载代码,类似于网络蚂蚁 网际快车的原理」· C头文件 代码 · 共 70 行

H
70
字号
//---------------------------------------------------------------------------

#ifndef THttpGetExH
#define THttpGetExH
//---------------------------------------------------------------------------
#include <SysUtils.hpp>
#include <Controls.hpp>
#include <Classes.hpp>
#include <Forms.hpp>

#include "THttpGetThread.h"
//---------------------------------------------------------------------------
class PACKAGE THttpGetEx : public TComponent
{
private:
    // 下载线程
    THttpGetThread **HttpThreads;
    AnsiString *OutTmpFiles;
    bool *FSuccesss;

    bool FHttpThreadCreated;     // 线程是否已经创建
    // 属性变量
    int FHttpThreadCount;
    bool FWorking;              // 是否正在下载
    bool  FFromBreakpoint;      // 从断点开始下载
    AnsiString FURL;
    AnsiString FOutFileName;
    // 事件变量
    TNotifyEvent        FOnAbort;
    TNotifyEvent        FOnError;
    TNotifyEvent        FOnComplete;
    TOnHttpGetFileSize  FOnGetFileSize;
    TOnProgressEvent    FOnProgress;
    TOnHttpStatusText   FOnStatusText;

    void AssignResource(void);
    void ReleaseResource(void);

    void DoOnComplete(void);
    void DoOnError(void);
    void DoOnStatusText(AnsiString Text);
    void __fastcall OnThreadError(TObject *Sender, int Index);
    void __fastcall OnThreadComplete(TObject *Sender, int Index);
protected:
    THttpGetThread * CreateHttpThread(void);    // 创建下载线程
    void CreateHttpThreads(void);    // 创建下载线程
public:
    __fastcall THttpGetEx(TComponent* Owner);
    __fastcall ~THttpGetEx();

    void __fastcall StartGet(void);
    void __fastcall RestartGet(void);
    void __fastcall Pause(void);
    void __fastcall Stop(void);
__published:
    __property int ThreadCount= { read=FHttpThreadCount, write=FHttpThreadCount };
    __property bool Working= { read=FWorking};
    __property bool FromBreakpoint  = { read=FFromBreakpoint, write=FFromBreakpoint};
    __property AnsiString URL  = { read=FURL, write=FURL };
    __property AnsiString FileName  = { read=FOutFileName, write=FOutFileName };
    __property TNotifyEvent OnAbort  = { read=FOnAbort, write=FOnAbort };
    __property TNotifyEvent OnError  = { read=FOnError, write=FOnError };
    __property TNotifyEvent OnComplete  = { read=FOnComplete, write=FOnComplete };
    __property TOnHttpGetFileSize OnGetFileSize  = { read=FOnGetFileSize, write=FOnGetFileSize };
    __property TOnProgressEvent OnProgress  = { read=FOnProgress, write=FOnProgress };
    __property TOnHttpStatusText OnStatusText  = { read=FOnStatusText, write=FOnStatusText };
};
//---------------------------------------------------------------------------
#endif
 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?