代碼如下,就是到創建任務的時候就回傳
'Access violation at address 00246451 in module 'xldl.dll'. Read of address 00000004'.
請大神幫助下
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Grids,StrUtils;
Type
PDownTaskParam =^TDownTaskParam;
TDownTaskParam = Record
nReserved1:integer;
szTaskUrl:String; // 任務URL,支持http,https,ftp,ftps格式
szRefUrl:String ; // 可空,HTTP下載所在的網頁URL
szCookies:String; // 可空,瀏覽器cookie
szFilename:array [0 .. 259] of WideChar; // 下載保存檔案名.
szReserved:array [0 .. 259] of WideChar;
szSavePath:array [0 .. 259] of WideChar; // 檔案保存目錄
hReserved:HWND;
bReserved1:boolean;
szReserved1:String[64] ;
szReserved2:String[64];
IsOnlyOriginal:boolean; //是否只從原始地址下載
nReserved2:UINT;
bReserved2:boolean;
IsResume:boolean; // 是否用續傳
reserved:DWORD;
end;
TYPE
DOWN_TASK_STATUS = (NOITEM = 0,
TSC_ERROR,
TSC_PAUSE,
TSC_DOWNLOAD,
TSC_COMPLETE,
TSC_STARTPENDING,
TSC_STOPPENDING );
TYPE
TASK_ERROR_TYPE =(TASK_ERROR_UNKNOWN , // 未知錯誤
TASK_ERROR_DISK_CREATE , // 創建檔案失敗
TASK_ERROR_DISK_WRITE, // 寫檔案失敗
TASK_ERROR_DISK_READ, // 讀檔案失敗
TASK_ERROR_DISK_RENAME, // 重命名失敗
TASK_ERROR_DISK_PIECEHASH, // 檔案片校驗失敗
TASK_ERROR_DISK_FILEHASH, // 檔案全文校驗失敗
TASK_ERROR_DISK_DELETE, // 洗掉檔案失敗失敗
TASK_ERROR_DOWN_INVALID , // 無效的DOWN地址
TASK_ERROR_PROXY_AUTH_TYPE_UNKOWN, // 代理型別未知
TASK_ERROR_PROXY_AUTH_TYPE_FAILED, // 代理認證失敗
TASK_ERROR_HTTPMGR_NOT_IP, // http下載中無ip可用
TASK_ERROR_TIMEOUT, // 任務超時
TASK_ERROR_CANCEL, // 任務取消
TASK_ERROR_TP_CRASHED, // MINITP崩潰
TASK_ERROR_ID_INVALID ) ; // TaskId 非法
type
PDownTaskInfo = ^TDownTaskInfo;
TDownTaskInfo = record
stat: DOWN_TASK_STATUS;
fail_code: TASK_ERROR_TYPE;
szFilename: array [0 .. 259] of WideChar;
szReserved0: array [0 .. 259] of WideChar;
nTotalSize: int64; // 該任務總大小(位元組)
nTotalDownload: int64; // 下載有效位元組數(可能存在回退的情況)
fPercent: single; // 下載進度
nReserved0: integer;
nSrcTotal: integer; // 總資源數
nSrcUsing: integer; // 可用資源數
nReserved1: integer;
nReserved2: integer;
nReserved3: integer;
nReserved4: integer;
nReserved5: int64;
nDonationP2P: int64; // p2p貢獻位元組數
nReserved6: int64;
nDonationOrgin: int64; // 原始資源共享位元組數
nDonationP2S: int64; // 鏡像資源共享位元組數
nReserved7: int64;
nReserved8: int64;
nSpeed: integer; // 即時速度(位元組/秒)
nSpeedP2S: integer; // 即時速度(位元組/秒)
nSpeedP2P: integer; // 即時速度(位元組/秒)
bIsOriginUsable: BOOLEAN; // 原始資源是否有效
fHashPercent: single; // 現不提供該值
IsCreatingFile: integer; // 是否正在創建檔案
reserved: array [0 .. 63] of longint;
end;
type
TForm2 = class(TForm)
Button1: TButton;
Label1: TLabel;
Button2: TButton;
edit1: TEdit;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
enumTaskStatus = (
enumTaskStatus_Connect = 0, // 已經建立連接
enumTaskStatus_Download = 2, // 開始下載
enumTaskStatus_Pause = 10, // 暫停
enumTaskStatus_Success = 11, // 成功下載
enumTaskStatus_Fail = 12);
function XL_CreateTask(stParam:TDownTaskParam):THANDLE ; cdecl; external 'xldl.dll';
//function XL_CreateTask(stParam:TDownTaskParam):THANDLE ; stdcall;external 'xldl.dll';
function XL_QueryTaskInfoEx(hTask: THANDLE; varstTaskInfo: TDownTaskInfo) : BOOLEAN; cdecl; external 'xldl.dll';
procedure XL_UnInit; external 'xldl.dll';
Function XL_Init:boolean; external 'xldl.dll';
Function XL_StartTask(hTask:THANDLE) : BOOLEAN; external 'xldl.dll';
procedure TForm2.Button1Click(Sender: TObject);
var
DTP:TDownTaskParam;
begin
//XL_Init;
if not XL_Init then
begin
Application.MessageBox('初始化迅雷引擎失敗!下載失敗!','警告:',MB_ICONWARNING);
Exit;
end;
DTP.szTaskUrl := (edit1.Text); //Pansichar
DTP.szFilename := '123.rar' ;
DTP.szSavePath := 'c:\download';
DTP.szRefUrl := '' ;
dtp.szCookies:='';
TH := XL_CreateTask(DTP);
//th:=XL_CreateTaskByURL(trim(edit2.Text),'c:\download','1.rar',False);
//XLURLDownloadToFile(edit1.Text,'c:\movie.rar');
if XL_StartTask(th) then
Label1.Caption := '開始任務'
else
Label1.Caption := '不能開始任務';
SHowMEssage(DTP.szSavePath);
end;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/64647.html
標籤:語言基礎/算法/系統設計
上一篇:intraweb網頁模板的問題
