亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? downcfg.~pas

?? 完全自我開發的downcfg控件
?? ~PAS
字號:
//作者:莊斗
//zhuangd@21cn.com
//下載單元,創建類TDownCFG配置實例,
//server服務器http全名,無則在配置文件中區
//inifile:ini配置文件
//section:讀取的部分
//【×××】《--section
//  server 《--服務器,傳入為空時取此值
//  from  《--服務器文件全路徑 及文件
//  to 《--本地存放文件相對(當前執行目錄)路徑及文件
//  method  《--下載后處理方法    1:直接存盤
//           2:運行,直到運行結束
//           3:運行,直接返回
//           9:為信息顯示
//  ver   《--版本號
//  desc 《--文件描述
//使用:
//給ProcessBar賦值
//downfile下載文件
//writecfg更新CFG文件
//exefile執行下載的文件
//downcfg直接從服務器下載升級文件信息http://server/update/server.ini
//compareCFG比較2個文件,返回需要下載的文件個數,注意文件名的路徑
{modify:
  2004.3.14  增加downcfg,writecfg函數
             修改downfile的try部分
  2004.3.20  修改下載存盤路徑方式,直接參盤到toto中,可以靈活設置toto值
             增加zompareCFG函數
}
unit downcfg;

interface
uses
   forms,windows,classes,SysUtils,inifiles, IdBaseComponent, IdComponent, IdTCPConnection,
   IdTCPClient, IdHTTP,IdGlobal, ComCtrls,dialogs,IdAntiFreezeBase,
  IdAntiFreeze;
type
TDownCFG=class
    inifile:string;
    ini:Tinifile;  //配置文件
    Server:string; //http服務器
    From:string;   //下載URL
    toto:string;   //存盤URL
    ver:string;    //版本號
    method:string; //處理方法
    section:string;//部分
    desc:string;//本描述
    error:string;//錯誤信息
    param:string;//運行參數
    fileCnt:integer;//下載文件個數
    ProgressBar: TProgressBar;//進度條
    procedure http1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
        const AWorkCountMax: Integer);
    procedure http1Work(Sender: TObject; AWorkMode: TWorkMode;
        const AWorkCount: Integer);
    procedure http1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
  private
    FHttpOnBeginWork:TWorkBeginEvent ;
    FHttpOnWork:TWorkEvent ;
    FHttpOnWorkEnd:TWorkEndEvent ;
    iDiv:integer;
  public
    property OnBeginWork:TWorkBeginEvent read FHttpOnBeginWork write FHttpOnBeginWork;
    property OnWork:TWorkEvent read FHttpOnWork write FHttpOnWork;
    property OnWorkEnd:TWorkEndEvent read FHttpOnWorkEnd write FHttpOnWorkEnd;
    function downfile:boolean;
    procedure writeCFG(source:TDownCFG;desc:TDownCFG);
    function  Exefile:boolean;
    function  downcfg:boolean;
    function  CompareCFG(server:string;client:string):integer;
    constructor Create(server1:string;inifile:string;section:string); //override;
  end;
var
 anFree: TIdAntiFreeze;
implementation

uses DownMess;

procedure TDownCFG.http1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
      const AWorkCountMax: Integer);
begin
  ProgressBar.Position:=0;
  ProgressBar.Max:=aworkcountmax;
  iDiv:=1;
  if aworkcountmax>3000000 then
    iDiv:=60
  else if aworkcountmax>1000000 then
    iDiv:=20
  else if aworkcountmax>500000 then
   iDiv:=2;
end;

//下載條控制
procedure TDownCFG.http1Work(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
begin
  ProgressBar.Position:=ProgressBar.Position+aworkCount div iDiv;
end;

procedure TDownCFG.http1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
 ProgressBar.Position:=0;
end;

//運行文件直到結束,返回,進行下一步
function WinExecAndWait32(FileName:String; Visibility:integer):integer;
var
  zAppName:array[0..512] of char;
  zCurDir:array[0..255] of char;
  WorkDir:String;
  i:cardinal;
  StartupInfo:TStartupInfo;
  ProcessInfo:TProcessInformation;
begin
  StrPCopy(zAppName,FileName);
  GetDir(0,WorkDir);
  StrPCopy(zCurDir,WorkDir);
  FillChar(StartupInfo,Sizeof(StartupInfo),#0);
  StartupInfo.cb := Sizeof(StartupInfo);
  StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
  StartupInfo.wShowWindow := Visibility;
  if not CreateProcess(nil,zAppName, { 執行文件}
     nil, { 指向安全屬性 }
     nil, { 執行thread屬性 }
     false, { handle標識 }
     CREATE_NEW_CONSOLE or { 標識 }
     NORMAL_PRIORITY_CLASS,
     nil, { 新的環境塊 }
     nil, { 當前目錄 }
     StartupInfo, { 指向STARTUPINFO }
     ProcessInfo)
           then Result := -1 { pointer to PROCESS_INF }
  else
    begin
       WaitforSingleObject(ProcessInfo.hProcess,INFINITE);
       GetExitCodeProcess(ProcessInfo.hProcess,i);
       result:=i;
    end;
end;

function TDownCFG.downcfg:boolean;
begin
   self.from:='http://'+server+'/update/server.ini';
   self.toto:='server.ini';
   if self.downfile then
    result:=true
   else
    result:=false;
end;

//比較配置文件,返回需要下載的文件數
function TDownCFG.compareCFG(server:String;client:string):integer;
var
 i,cnt,k:integer;
 iniS,iniC:tinifile;
 vS,vC:string;
begin
 k:=0;
 iniS:=tinifile.Create(server);
 iniC:=tinifile.Create(server);
 cnt:= iniS.ReadInteger('server','filecnt',0);
 for i:=1 to cnt do
  begin
    vS:=iniS.ReadString('file'+inttostr(i),'ver','');
    vC:=iniC.ReadString('file'+inttostr(i),'ver','');
    if vS>vC then
      inc(k);
  end;
 iniS.Free;
 iniC.Free;
 result:=k;
end ;

//更新配置文件
procedure TDownCFG.writeCFG(source:TDownCFG;desc:TDownCFG);
begin
  ini:=tinifile.Create(extractfilepath(paramstr(0))+desc.inifile);
  ini.WriteString('server','host',source.Server);
  ini.WriteString(section,'From',source.From);
  ini.WriteString(section,'To',source.toto);
  ini.WriteString(section,'Ver',source.ver);
  ini.WriteString(section,'Method',source.method);
  ini.WriteString(section,'Desc',source.desc);
  ini.Free;
end;

//下載文件后的處理
{9:顯示信息
 1:下載保存
 2:下載運行,結束后返回
 3:下載運行,直接返回
}
function TDownCFG.ExeFile:boolean;
var
  id:integer;
begin
    result:=true;
    case strtoint(method) of
      9://顯示消息
      begin
       mess:=TMess.Create(nil);
       mess.left:= (screen.Width-mess.Width) div 2;
       mess.top:=(screen.Height-mess.Height) div 2;
       mess.RE1.Lines.LoadFromFile(extractfilepath(paramstr(0))+toto);
       mess.ShowModal;
       mess.Free;
      end;
    1:;//存盤文件
    2://執行文件,直到文件運行結束
      begin
        //winexec(pchar(extractfilepath(paramstr(0))+toto+' '+param),sw_shownormal);
        WinExecAndWait32(extractfilepath(paramstr(0))+toto+' '+param,1);
        //showmessage('end');
      end;
    3://執行文件,立即返回
      begin
        winexec(pchar(extractfilepath(paramstr(0))+toto+' '+param),sw_shownormal);
      end;
   end;
end;

//下載文件,from-->toto
function TDownCFG.downfile:boolean;
var
    MyStream:TMemoryStream;
    HTTP1: TIdHTTP;
begin
  if not assigned(ProgressBar) then
  begin
    error:='配置文件初始化失敗processBar';
    result:=false;
    exit;
  end;
  if toto='' then
   begin
     error:='目標文件空';
     result:=false;
     exit;
   end;

  try
    MyStream:=TMemoryStream.Create;
  except
    result:=false;
    error:='創建Stream失敗';
    exit;
  end;
  try
    http1:=TIdHTTP.Create(nil);
  except
    result:=false;
    error:='創建http失敗';
    MyStream.Free;
    exit;
  end;
  //初始化http控件
    http1. MaxLineAction := maException ;
    http1.AllowCookies:= True;
    http1.ReadTimeout:=0;
    http1.ProxyParams.BasicAuthentication := False;
    http1.ProxyParams.ProxyPort := 0;
    http1.Request.ContentLength := -1;
    http1.Request.ContentRangeEnd := 0;
    http1.Request.ContentRangeStart := 0;
    http1.Request.ContentType := 'text/html' ;
    http1.Request.Accept := 'text/html, */*' ;
    http1.Request.BasicAuthentication := False;
    http1.Request.UserAgent := 'Mozilla/3.0 (compatible; Indy Library)';
    http1.HTTPOptions := [hoForceEncodeParams];

    http1.OnWork:=OnWork;;
    http1.OnWorkBegin:=OnBeginWork;;
    http1.OnWorkEnd:=OnWorkEnd;;
    try
      http1.Get(from,Mystream);
      result:=true;
    except
     on e:exception do
      begin
        result:=false;
        error:=e.Message;
        mystream.Free;
        http1.Free;
        exit;
      end;
    end;
    chdir(extractfilepath(paramstr(0)));
    try
      MyStream.SaveToFile(toto);
    except
      on e:exception do
       begin
        result:=false;
        error:=e.Message;
       end;
    end;
    mystream.Free;
    http1.Free;
end;

//類實例創建,初始化一些值
constructor TDownCFG.Create(server1:string;inifile:string;section:string);
begin
  inherited Create;
  ini:=tinifile.Create(extractfilepath(paramstr(0))+inifile);
  if server1<>'' then
    server:=server1
  else
    server:=ini.ReadString('server','host','127.0.0.1');
  fileCnt:=ini.ReadInteger('server','filecnt',0);
  param:=ini.ReadString(section,'param','');
  from:=ini.ReadString(section,'From','');
  Toto:=ini.ReadString(section,'To','');
  ver:=ini.ReadString(section,'ver','');
  method:=ini.ReadString(section,'Method','');
  desc:=ini.ReadString(section,'Desc','');
  self.inifile:=inifile;
  self.section:=section;
  FHttpOnBeginWork:= http1WorkBegin;
  FHttpOnWork:= http1Work;
  FHttpOnWorkEnd:= http1WorkEnd;
  ini.Free;
   anFree:= TIdAntiFreeze.Create(nil);
   anfree.OnlyWhenIdle:=false;
end;


end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美午夜在线观看| 狠狠色丁香久久婷婷综| 在线观看免费一区| 亚洲国产精品人人做人人爽| 7777精品伊人久久久大香线蕉最新版| 午夜电影网一区| 欧美一级夜夜爽| 国产伦精品一区二区三区免费 | 亚洲色图色小说| 99精品欧美一区二区三区小说| 国产精品久久久久久久裸模| 国产成人精品免费一区二区| 亚洲欧美综合色| 欧美三级电影网| 国产在线精品视频| 1024成人网| 91精品国产一区二区三区蜜臀| 久久国产尿小便嘘嘘尿| 国产精品久久久久久久浪潮网站| 色哟哟一区二区| 久久99九九99精品| 中文字幕字幕中文在线中不卡视频| 欧美撒尿777hd撒尿| 国内国产精品久久| 亚洲一区二区欧美| 久久综合九色综合97婷婷| 99久久综合色| 久久精品欧美一区二区三区麻豆| 在线影视一区二区三区| 午夜欧美在线一二页| 91精品国产综合久久久久久久| 激情丁香综合五月| 日本一区二区视频在线观看| 欧美精品日日鲁夜夜添| 国产美女主播视频一区| 亚洲伊人伊色伊影伊综合网| 久久久久一区二区三区四区| 国产91丝袜在线播放0| 自拍偷拍欧美精品| 欧美sm美女调教| 在线中文字幕一区| 成人污污视频在线观看| 日本三级亚洲精品| 成人免费在线观看入口| 精品噜噜噜噜久久久久久久久试看 | 日本不卡123| 综合婷婷亚洲小说| 久久综合一区二区| 91麻豆精品91久久久久同性| 色综合久久综合网97色综合 | 成人永久免费视频| 另类小说图片综合网| 亚洲一区在线视频| 亚洲欧洲另类国产综合| 欧美xxxxx牲另类人与| 欧美女孩性生活视频| 色网站国产精品| 婷婷综合另类小说色区| 久久亚洲免费视频| 日韩欧美亚洲一区二区| 欧美日韩成人高清| 欧美亚洲精品一区| 91在线视频在线| 9久草视频在线视频精品| 国产精品一区二区久激情瑜伽| 蜜桃av噜噜一区| 婷婷国产v国产偷v亚洲高清| 亚洲图片激情小说| 国产三级精品三级在线专区| 精品国产一区a| 日韩一级大片在线观看| 国产午夜一区二区三区| 91视频一区二区三区| av在线播放成人| 国产成人av在线影院| 成人综合激情网| www.日韩在线| 91免费看视频| 色香蕉久久蜜桃| 欧美丝袜丝交足nylons图片| 欧美性三三影院| 欧美日韩精品欧美日韩精品 | 91蜜桃在线观看| 99精品视频在线播放观看| av亚洲精华国产精华| 菠萝蜜视频在线观看一区| 处破女av一区二区| 91免费观看在线| 一本大道久久a久久综合婷婷| 色综合久久中文字幕综合网 | 欧美日韩精品一区二区三区蜜桃 | 1区2区3区精品视频| 亚洲卡通动漫在线| 亚洲精选视频免费看| 亚洲日本在线a| 亚洲一区二区中文在线| 一区二区三区在线免费播放| 欧美电影免费提供在线观看| 欧美成人vps| 中文字幕一区二区三区av| 亚洲免费av在线| 婷婷国产v国产偷v亚洲高清| 韩国成人福利片在线播放| 成人黄色小视频| 91在线视频18| 亚洲一级片在线观看| 亚洲va韩国va欧美va精品| 九九视频精品免费| 久久精品国产亚洲高清剧情介绍| 国内精品写真在线观看| 成人高清av在线| 欧美日韩电影在线| 狠狠狠色丁香婷婷综合久久五月| 不卡的av在线播放| 国产白丝精品91爽爽久久| 狠狠色丁香婷婷综合久久片| 亚洲激情自拍偷拍| 国产精品美女久久久久久久久 | 亚洲黄色小说网站| 亚洲综合久久久| 午夜精品一区二区三区电影天堂 | 亚洲一区在线看| 五月综合激情婷婷六月色窝| 青娱乐精品视频在线| 蜜臀av一级做a爰片久久| 久久国产剧场电影| 国产成人亚洲精品狼色在线| 欧美在线看片a免费观看| 欧美日韩第一区日日骚| 欧美日韩一级二级三级| 欧美一区二区三区人| 国产精品久久久久四虎| 捆绑调教一区二区三区| 国产精品一二二区| 色婷婷精品大在线视频 | 粉嫩欧美一区二区三区高清影视| 欧美三级资源在线| 亚洲人成7777| av不卡在线播放| 国产欧美日韩视频在线观看| 五月激情综合婷婷| 欧美中文字幕不卡| 国产天堂亚洲国产碰碰| 美女视频黄a大片欧美| 在线影院国内精品| 日韩一区在线免费观看| 国产精品 日产精品 欧美精品| 91精品国产日韩91久久久久久| 亚洲人一二三区| 99久久er热在这里只有精品66| 国产欧美日韩精品在线| 国产一区在线观看视频| 日韩欧美一二区| 奇米色一区二区三区四区| 国产精品一区二区无线| 欧美mv日韩mv| 亚洲午夜精品一区二区三区他趣| 成人综合日日夜夜| 91免费版在线看| 国产精品国产精品国产专区不蜜| 精品一区二区三区在线观看| 国产精品久久久久久久久果冻传媒| 裸体健美xxxx欧美裸体表演| 国产呦萝稀缺另类资源| 91精品在线麻豆| 一区二区三区在线免费| 另类小说色综合网站| 粉嫩aⅴ一区二区三区四区| 国产欧美精品一区二区色综合朱莉 | 精品成人一区二区三区| 国产精品一线二线三线精华| 日韩久久久久久| 综合久久久久久| 99久久久无码国产精品| 亚洲精品一线二线三线 | 一区二区三区在线免费观看| 欧美亚洲综合色| 午夜视频一区在线观看| 88在线观看91蜜桃国自产| 亚洲免费高清视频在线| 91网站最新地址| 午夜欧美2019年伦理| 99久久综合色| 亚洲色图.com| 精品视频一区二区不卡| 一区二区三区视频在线看| 日本乱码高清不卡字幕| 亚洲成人精品一区二区| 欧美日韩在线一区二区| 一区二区三区小说| 岛国精品一区二区| 一区二区三区电影在线播| 激情六月婷婷久久| 在线观看一区日韩| 精品福利一区二区三区 | 国产精品你懂的在线| 久久九九久久九九| 成人影视亚洲图片在线| 亚洲精品综合在线| 精品国产乱码久久久久久夜甘婷婷 |