亚洲欧美第一页_禁久久精品乱码_粉嫩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(client);
 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一区二区三区免费野_久草精品视频
欧美日韩一区二区在线观看| 日日摸夜夜添夜夜添精品视频| 91女厕偷拍女厕偷拍高清| 亚洲.国产.中文慕字在线| 欧美一级日韩一级| 91在线视频18| 国产在线精品国自产拍免费| 亚洲天堂久久久久久久| 国产亚洲精品免费| 欧美日韩国产大片| 色婷婷综合久久久中文字幕| 国产一区二区三区免费| 免费在线成人网| 亚洲人快播电影网| 综合激情成人伊人| 国产精品麻豆视频| 欧美—级在线免费片| 久久久久久免费| 日韩美一区二区三区| 制服丝袜日韩国产| 欧美一区二区三区思思人| 日本韩国欧美三级| 色94色欧美sute亚洲13| 99久久er热在这里只有精品15 | 在线精品亚洲一区二区不卡| 国产91精品免费| 国产乱码精品一区二区三区忘忧草| 丝袜脚交一区二区| 国产一区91精品张津瑜| 久久99久久久久久久久久久| 青青青爽久久午夜综合久久午夜| 亚洲午夜久久久久久久久久久| 有坂深雪av一区二区精品| 一区二区三区不卡在线观看 | 欧美一卡在线观看| 久久综合色8888| 国产欧美精品一区二区色综合| 国产欧美一区二区精品性色超碰| 欧美激情在线看| 亚洲一区二区视频在线观看| 日本免费新一区视频| 国产成人精品免费一区二区| 99天天综合性| 成人网在线免费视频| 日本亚洲免费观看| 精品无人码麻豆乱码1区2区| 成人永久免费视频| 欧美日韩卡一卡二| 久久精品夜色噜噜亚洲aⅴ| 国产精品视频观看| 美腿丝袜亚洲三区| 91国偷自产一区二区三区观看| 欧美岛国在线观看| 亚洲精品视频免费看| 捆绑紧缚一区二区三区视频| 成人一区二区三区在线观看| 欧美性感一类影片在线播放| 精品福利一区二区三区| 亚洲伦理在线免费看| 成人午夜在线免费| 色综合欧美在线视频区| 日本一区二区电影| 国产真实乱偷精品视频免| 欧美日韩国产乱码电影| 亚洲乱码日产精品bd| av午夜一区麻豆| 国产日韩欧美麻豆| 久久99国内精品| 精品国产亚洲在线| 久久国产乱子精品免费女| 欧美日韩色综合| 亚洲一区二区三区四区在线免费观看 | 欧美激情在线免费观看| 国产自产视频一区二区三区| 欧美日韩国产123区| 水野朝阳av一区二区三区| 欧美视频一区二| 午夜不卡在线视频| 欧美一卡在线观看| 狠狠色丁香九九婷婷综合五月| 精品国精品国产| 精品无人区卡一卡二卡三乱码免费卡| 日韩视频免费观看高清在线视频| 日韩福利视频导航| 久久一日本道色综合| 播五月开心婷婷综合| 亚洲欧洲成人av每日更新| 色综合久久中文综合久久97 | 中文字幕一区日韩精品欧美| 9i看片成人免费高清| 午夜精品一区二区三区免费视频 | 99在线精品观看| 亚洲卡通欧美制服中文| 欧美精品日韩一区| 国产麻豆精品视频| 中文字幕一区二区三| 欧美片网站yy| 国产不卡视频在线播放| 免费成人在线视频观看| 久久亚洲精品国产精品紫薇| 色综合夜色一区| 日本美女一区二区三区视频| 91精品国产综合久久福利软件| 中文字幕综合网| 日韩免费一区二区| 色国产综合视频| 国产a精品视频| 日本亚洲视频在线| 伊人婷婷欧美激情| 欧美激情一区三区| 欧美成人欧美edvon| 欧美日本精品一区二区三区| 国产精品1024久久| 免费看欧美女人艹b| 亚洲国产视频直播| 亚洲视频 欧洲视频| 亚洲国产精华液网站w| 日韩欧美一区中文| 欧美一区二区高清| 欧美日韩高清一区二区不卡| 91国产福利在线| 91香蕉视频污在线| 91在线播放网址| 99久久婷婷国产综合精品电影 | 亚洲一区二区在线视频| 亚洲丝袜制服诱惑| 亚洲特黄一级片| 成人免费在线视频观看| 成人欧美一区二区三区视频网页| 久久免费美女视频| 国产精品美女久久久久av爽李琼| 久久婷婷久久一区二区三区| 久久综合av免费| 国产精品久久久久aaaa| 国产精品国产馆在线真实露脸| 中文字幕一区不卡| 亚洲精品videosex极品| 午夜精品久久久久久久99樱桃 | 亚洲综合色婷婷| 天天影视网天天综合色在线播放| 亚洲成a人片在线不卡一二三区| 有码一区二区三区| 国产精品伊人色| 懂色av一区二区三区蜜臀| 99免费精品视频| 91精品视频网| 欧美国产在线观看| 亚洲成在人线免费| 国产一区二区三区免费看| 91麻豆免费看片| 日韩精品一区二区三区在线播放| 国产欧美精品日韩区二区麻豆天美| 中文字幕亚洲在| 国产呦精品一区二区三区网站| 成人aaaa免费全部观看| 91精品国产91久久综合桃花| 国产女同性恋一区二区| 亚洲成av人片在www色猫咪| 国产成人免费在线视频| 欧美日韩久久不卡| 亚洲蜜桃精久久久久久久| 激情综合色综合久久| 欧美三级欧美一级| 亚洲四区在线观看| 国产91对白在线观看九色| 日韩三级视频在线看| 日本人妖一区二区| 欧美熟乱第一页| 亚洲综合色区另类av| 99r精品视频| 亚洲少妇最新在线视频| 国产成人在线视频播放| 日韩欧美一区二区不卡| 免费一级片91| 欧美电影免费提供在线观看| 三级在线观看一区二区| 欧美性猛交xxxx黑人交| 夜夜精品视频一区二区| 91亚洲精品一区二区乱码| 国产精品久久久久久久久免费丝袜| 免费久久99精品国产| 91一区二区三区在线观看| 欧美大片日本大片免费观看| 欧美bbbbb| 久久久精品免费网站| 色欧美片视频在线观看| 亚洲欧美日韩久久精品| 在线免费精品视频| 午夜电影网亚洲视频| 精品国产一区二区精华| 国产一区二区久久| 国产精品久线在线观看| 欧美三级电影在线观看| 日日夜夜一区二区| 国产亚洲一本大道中文在线| 91在线观看免费视频| 婷婷综合久久一区二区三区| 精品美女被调教视频大全网站| 国产成人精品一区二区三区四区 | 欧美人狂配大交3d怪物一区|