⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 thttpgetex.~h

📁 多线程 http 下载 c++builder代码
💻 ~H
字号:
//---------------------------------------------------------------------------

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

#include "THttpGetThread.h"

typedef enum
     {
       mGetFileSizeFalse,// 获取文件大小
       mCreateFileFalse,// 建立文件
       mThreadError,//线程错误
       mOnAbort,// 终止
     } ErrorCode;

//---------------------------------------------------------------------------
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;
    TOnError            FOnError;
    TNotifyEvent        FOnComplete;
    TOnHttpGetFileSize  FOnGetFileSize;
    TOnProgressEvent    FOnProgress;
    TOnHttpStatusText   FOnStatusText;

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

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

    int  __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 TOnError     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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -