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

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

?? main.pas

?? 考勤系統(tǒng)自動在線升級程序源碼vagrantUpdate
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
unit Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,Registry, StdCtrls,shellapi, WinSkinData, ComCtrls, ExtCtrls,
  Buttons, ImgList, IdFTP, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdHTTP,IniFiles;

type
  TFrm_Main = class(TForm)
    Memo1: TMemo;
    SkinData1: TSkinData;
    btn_Update: TBitBtn;
    PB_Cur: TProgressBar;
    Panel1: TPanel;
    Image1: TImage;
    PB_Whole: TProgressBar;
    Label2: TLabel;
    Label1: TLabel;
    Btn_Cancel: TBitBtn;
    IdHTTP1: TIdHTTP;
    IdFTP1: TIdFTP;
    Label3: TLabel;
    procedure btn_UpdateClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure Btn_CancelClick(Sender: TObject);
    procedure IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
      const AWorkCount: Integer);
    procedure IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
      const AWorkCountMax: Integer);
    procedure IdHTTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
    LocalVer,NetVer:Double;
    LocalVerStr,NetVerStr:String;
    SQLCount:integer;  //需執(zhí)行SQL的總數(shù)
    nDownFileCount:integer; //需下載的文件數(shù)
    DispStr:String;   //顯示正在執(zhí)行哪個動作的信息
    procedure CreateScript;
    procedure RunScript(const sSQL: String);
    function  GetFileVer(const AFileName: string;AIndex:integer): Cardinal;
    function  GetFileVerStr(AFileName:String): String;
    procedure ClearReg;
    procedure WriteErrLog(ErrStr:String);
  private
    AbortTransfer: Boolean; //是否中斷
    BytesToTransfer: LongWord; //下載總大小
    aHint,NoRunSQL:Boolean;
    WinPath,TmpURL,MyURL:String;
    NetIni:TIniFile;
    WebStr:String;
    procedure FtpDownLoad(aURL, aFile: string; bResume: Boolean);
    procedure HttpDownLoad(aURL, aFile: string; bResume: Boolean);
    procedure MyDownLoad(aURL, aFile: string; bResume: Boolean);
    function  GetProt(aURL: string): Byte;
    function  GetURLFileName(aURL: string): string;
    procedure GetFTPParams(aURL: string; var sName, sPass, sHost, sPort,sDir: string);  
    procedure BakOldFile;
    procedure DownNetUpdateIni;
    procedure DispPanelVer;
    procedure DownAFile(aName:String);
  public
    { Public declarations }
  end;

var
  Frm_Main: TFrm_Main;
  TxtFile:TextFile;
  DownList,ExeList:TStringList;
  AverageSpeed: Double = 0;
implementation

uses DM, DBTables, DB, ADODB;

{$R *.dfm}

//檢測下載的地址是http還是ftp
function TFrm_Main.GetProt(aURL: string): Byte;
begin
  Result := 0;
  if Pos('http', LowerCase(aURL))= 1 then  Result := 1; //http協(xié)議
  if Pos('ftp', LowerCase(aURL)) = 1 then  Result := 2; //ftp協(xié)議
end;

 //返回下載地址的文件名
function TFrm_Main.GetURLFileName(aURL: string): string;
var
  i: integer;
  s: string;
begin
  s := aURL;
  i := Pos('/', s);
  while i <> 0 do //去掉"/"前面的內容剩下的就是文件名了
    begin
      Delete(s, 1, i);
      i := Pos('/', s);
    end;
  Result := s;
end;

//分析ftp地址的登陸用戶名,密碼和目錄
procedure TFrm_Main.GetFTPParams(aURL: string; var sName, sPass, sHost, sPort, sDir: string);
var
  i, j: integer;
  s, tmp: string;
begin
  s := aURL;
  if Pos('ftp://', LowerCase(s)) <> 0 then  Delete(s, 1, 6);//去掉ftp頭
  i := Pos('@', s);
  if i <> 0 then //地址含用戶名,也可能含密碼
    begin
      tmp := Copy(s, 1, i - 1);
      s := copy(s, i+1, Length(s));
      j := Pos(':', tmp);
      if j <> 0 then //包含密碼
        begin
          sName := Copy(tmp, 1, j - 1); //得到用戶名
          sPass := Copy(tmp, j + 1, i - j - 1); //得到密碼
        end
      else
        begin
          sName := tmp;
          sPass := Inputbox('輸入框','請輸入登陸ftp密碼','');
        end;
    end
  else //匿名用戶
    begin
      sName := 'anonymous';
      sPass := 'test@ftp.com';
    end;
  i := Pos(':', s);
  j := Pos('/', s);
  sHost := Copy(s, 1, j - 1); //主機
  if i <> 0 then  sPort := Copy(s, i + 1, j - i - 1)//含端口
  else  sPort := '21'; //默認21端口
  tmp := Copy(s, j + 1, Length(s));
  while j <> 0 do
    begin
      Delete(s, 1, j);
      j := Pos('/', s);
    end; //目錄
  sDir := '/' + Copy(tmp, 1, Length(tmp) - Length(s) - 1);
end;

//ftp方式下載
procedure TFrm_Main.FtpDownLoad(aURL, aFile: string; bResume: Boolean);
var
  tStream: TFileStream;
  sName, sPass, sHost, sPort, sDir: string;
begin
  if FileExists(aFile) then tStream := TFileStream.Create(aFile, fmOpenWrite)
  else  tStream := TFileStream.Create(aFile, fmCreate); //建立文件流
  GetFTPParams(aURL, sName, sPass, sHost, sPort, sDir);
  with IdFTP1 do
  try
    if Connected then Disconnect; //重新連接
    Username := sName;
    Password := sPass;
    Host := sHost;
    Port := StrToInt(sPort);
    Connect;
  except
    exit;
  end;

  IdFTP1.ChangeDir(sDir); //改變目錄
  BytesToTransfer := IdFTP1.Size(aFile);
  try
    if bResume then //續(xù)傳
      begin
        tStream.Position := tStream.Size;
        IdFTP1.Get(aFile, tStream, True);
      end
    else
      begin
        IdFTP1.Get(aFile, tStream, False);
      end;
  finally
    tStream.Free;
  end;
end;

//http方式下載
procedure TFrm_Main.HttpDownLoad(aURL, aFile: string; bResume: Boolean);
var
  tStream: TFileStream;
begin
  try
     //如果文件已經(jīng)存在
    if FileExists(aFile) then tStream := TFileStream.Create(aFile, fmOpenWrite)
    else tStream := TFileStream.Create(aFile, fmCreate);
    if bResume then //續(xù)傳方式
      begin
        IdHTTP1.Request.ContentRangeStart := tStream.Size - 1;
        tStream.Position := tStream.Size - 1; //移動到最后繼續(xù)下載
        IdHTTP1.Head(aURL);
        IdHTTP1.Request.ContentRangeEnd := IdHTTP1.Response.ContentLength;
      end
    else //覆蓋或新建方式
      begin
        IdHTTP1.Request.ContentRangeStart := 0;
      end;
    try
      IdHTTP1.Get(aURL, tStream); //開始下載
    finally
      tStream.Free;
    end;
  Except
    on E:Exception do
      begin
        if (Pos('Operation aborted',E.Message)>=0) and AbortTransfer then
          begin
            E.Message:='已被用戶中斷';
          end;
        Application.MessageBox(PChar('升級過程中出現(xiàn)了錯誤了,錯誤信息如下:'+#13+#13+E.Message),PChar('系統(tǒng)提示'),Mb_OK+MB_ICONERROR);
        WriteErrLog('升級過程中出現(xiàn)了錯誤了,錯誤信息如下:'+E.Message);
        CopyFile(PChar(ExtractFilePath(ParamStr(0))+'Bak\KQSys.exe'),PChar(ExtractFilePath(ParamStr(0))),False);
        Abort;
      end;
  end;
end;

procedure TFrm_Main.MyDownLoad(aURL, aFile: string; bResume: Boolean);
begin
  case GetProt(aURL) of
    0: Application.MessageBox(PChar('不可識別的地址'),PChar('系統(tǒng)提示'),Mb_OK+MB_ICONERROR);
    1: HttpDownLoad(aURL, aFile, bResume);
    2: FtpDownLoad(aURL, aFile, bResume);
  end;
end;


procedure TFrm_Main.btn_UpdateClick(Sender: TObject);
var
  aURL, aFile: string;
  LStr:string;
  i:integer;
  dFileName,LangFold:string; //網(wǎng)絡上Ini文件名(如Language\CHS.INI)跟語言文件夾
  aFileName:String;  //去掉路徑后的文件名
begin
  DispStr:='正在下載新版本文件%S,請稍候...';
  try
    Screen.Cursor:=crSQLWait;
    btn_Update.Enabled:=False;
    Btn_Cancel.Caption:='中斷升級';
    try
      Label3.Caption:='正在獲取升級配置文件,請稍候...';
      Refresh;
      DownNetUpdateIni;
    except
      on  E:Exception do
        begin
          Application.MessageBox(PChar('獲取升級配置文件失敗,請梢候重試'+#13+#13+E.Message),PChar('系統(tǒng)提示'),MB_OK+MB_ICONERROR);
          WriteErrLog('獲取升級配置文件失敗,錯誤信息如下:'+E.Message);
          Exit;
        end;
    end;
    with PB_Whole do
      begin
        Max:=6+2*nDownFileCount;
        Min:=0;
        Step:=1;
      end;

    Label3.Caption:='正在啟動升級配置文件...';
    DispPanelVer;
    PB_Whole.StepIt;
    Refresh;

    Label3.Caption:='正在備份舊版本文件,請稍候...';
    BakOldFile;
    PB_Whole.StepIt;
    Refresh;

   //下載新版本的文件 
    for i:=0 to DownList.Count-1 do
      begin
        dFileName:=Copy(DownList.Strings[i],Pos('=',DownList.Strings[i])+1,Length(DownList.Strings[i]));
        if Pos('\',dFileName)>0 then
          begin
            LangFold :=copy(dFileName,0,Pos('\',dFileName)-1);
            aFileName:=copy(dFileName,Pos('\',dFileName)+1,Length(dFileName));
            Label3.Caption:=Format(DispStr,[aFileName]);
            Refresh;
            DownAFile(aFileName);
          end
        else
          begin
            Label3.Caption:=Format(DispStr,[dFileName]);
            Refresh;
            DownAFile(dFileName);
          end;
        PB_Whole.StepIt;  
      end;

    ClearReg;
    PB_Whole.StepIt;

    Memo1.Lines.LoadFromFile(ExtractFilePath(ParamStr(0))+'UpdateSQL.dll');
    DeleteFile(ExtractFilePath(ParamStr(0))+'UpdateSQL.dll');
    Label3.Caption:='正在更新數(shù)據(jù)庫信息,請稍侯...';
    Refresh;
    CreateScript;
    PB_Whole.StepIt;

    Label3.Caption:='正在更新本地程序,請稍侯...';
    Refresh;
    CopyFile(PChar('CHS.ini'),PChar(ExtractFilePath(ParamStr(0)+'Language\CHS.ini')),False);
    CopyFile(PChar('CHT.ini'),PChar(ExtractFilePath(ParamStr(0)+'Language\CHT.ini')),False);
    CopyFile(PChar('MenuConf.ini'),PChar(WinPath+'MenuConf.ini'),False);
    Ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'SysData\Update.ini');
    with Ini do
      begin
        WriteString('WWW','URL',WebStr);
        Free;
      end;
    PB_Whole.StepIt;


    DeleteFile('CHS.INI');
    DeleteFile('CHT.INI');
    DeleteFile('MenuConf.INI');
    PB_Whole.StepIt;
    Application.MessageBox(PChar('恭喜,程序已經(jīng)升級到最新版本'),PChar('系統(tǒng)提示'),MB_OK+MB_ICONINFORMATION);
  finally
    btn_Update.Enabled:=True;
    Screen.Cursor:=crDefault;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩国毛片一区二区三区| 国产精品日产欧美久久久久| 欧美日韩在线播放| 亚洲欧美国产高清| 久久99在线观看| 69p69国产精品| 视频一区在线视频| 欧美日韩黄色一区二区| 亚洲福利视频一区二区| 在线视频观看一区| 肉丝袜脚交视频一区二区| 欧美精品视频www在线观看| 亚洲成av人**亚洲成av**| 欧美日韩精品电影| 极品少妇一区二区| 久久精品综合网| a4yy欧美一区二区三区| 亚洲国产日韩一级| 日韩三级免费观看| 高清不卡在线观看av| 自拍av一区二区三区| 欧美精品色综合| 国产精品1区2区3区| 亚洲丝袜制服诱惑| 777久久久精品| 国产精品综合久久| 亚洲国产成人av好男人在线观看| 91精品国产91久久综合桃花| 精品一区二区三区影院在线午夜| 欧美国产精品一区二区三区| 欧美日韩一区久久| 99久久精品国产一区| 欧美aa在线视频| 樱花影视一区二区| 久久久久亚洲蜜桃| 91.com视频| 欧美在线999| eeuss鲁一区二区三区| 美女视频免费一区| 亚洲不卡一区二区三区| 国产精品美女视频| 日韩精品专区在线影院重磅| 91在线精品一区二区| 国产成人自拍高清视频在线免费播放| 亚洲成人av在线电影| 亚洲同性同志一二三专区| 国产日产精品1区| 久久综合av免费| 欧美一区二区三区啪啪| 欧美久久久久免费| 3d成人动漫网站| 欧美人与z0zoxxxx视频| 欧美精品久久一区| 777久久久精品| 欧美videos中文字幕| 欧美一区二区福利在线| 日韩美女视频在线| 欧美v日韩v国产v| 国产夜色精品一区二区av| 国产亚洲欧美色| 日本一区二区三区久久久久久久久不| 久久亚洲综合色一区二区三区| 欧美变态口味重另类| 中文字幕第一区| 亚洲乱码国产乱码精品精98午夜 | 色狠狠综合天天综合综合| 9i看片成人免费高清| 欧美人妖巨大在线| 国产亚洲精品7777| 亚洲国产成人va在线观看天堂| 日韩av电影一区| 成人亚洲一区二区一| 色噜噜狠狠成人中文综合 | 高清在线成人网| 日本韩国精品在线| 91精品国产免费久久综合| 国产喷白浆一区二区三区| 一区二区三区小说| 国产在线精品免费av| 色综合久久久久综合体桃花网| 欧美日韩国产综合视频在线观看 | 337p日本欧洲亚洲大胆精品| 国产精品久久久久婷婷二区次| 亚洲成a人片综合在线| 99久久伊人久久99| 精品福利在线导航| 日韩和欧美一区二区| 91国在线观看| 日韩理论片在线| 国产成人在线影院| 欧美电影免费观看高清完整版在线| 中文字幕日韩av资源站| 韩国中文字幕2020精品| 91麻豆精品91久久久久久清纯| 在线播放91灌醉迷j高跟美女| 日本一区二区三区在线观看| 精品一区二区三区av| 91精品欧美一区二区三区综合在| 亚洲视频资源在线| 99国产精品一区| 久久嫩草精品久久久精品| 激情图片小说一区| 精品国产乱码久久久久久图片| 日产欧产美韩系列久久99| 欧美一级国产精品| 人禽交欧美网站| 国产色产综合产在线视频| 国产一本一道久久香蕉| 精品国产青草久久久久福利| 久久97超碰国产精品超碰| 久久综合久久99| 成人av中文字幕| 日本高清不卡aⅴ免费网站| 成人av电影观看| 国产精品看片你懂得| 欧洲人成人精品| 国产麻豆成人传媒免费观看| 亚洲色图制服诱惑| 日韩欧美色电影| 色综合久久综合网| 国内精品国产三级国产a久久| 国产精品三级在线观看| 在线播放一区二区三区| 国产91精品一区二区麻豆亚洲| 国产精品国产三级国产三级人妇| 欧洲精品在线观看| 国产美女在线观看一区| 亚洲va国产va欧美va观看| 久久久精品国产免大香伊 | 亚洲愉拍自拍另类高清精品| 日韩精品专区在线影院重磅| 91啪九色porn原创视频在线观看| 青青草视频一区| 亚洲va韩国va欧美va精品| 亚洲女性喷水在线观看一区| 精品粉嫩aⅴ一区二区三区四区| 欧美午夜精品久久久久久孕妇 | 99国产精品国产精品毛片| 青青草国产精品亚洲专区无| 一区二区三区四区精品在线视频| 久久九九国产精品| 国产欧美精品一区二区三区四区| 在线成人小视频| 91在线观看一区二区| 欧美国产1区2区| 日韩欧美电影一二三| 精品一区二区三区的国产在线播放| 亚洲精品欧美专区| 国产福利一区二区三区| 亚洲不卡在线观看| 国产午夜精品美女毛片视频| 99久久婷婷国产| 国产99久久精品| 国产激情一区二区三区四区| 国产精品一区二区三区乱码| 国产剧情在线观看一区二区| 国产高清久久久| 97久久人人超碰| 在线视频一区二区免费| 欧美亚洲动漫制服丝袜| 色婷婷综合在线| 精品久久免费看| 国产精品成人免费| 亚洲一区二区在线免费观看视频| 亚洲欧洲av色图| 日韩av不卡在线观看| 国产激情偷乱视频一区二区三区 | 亚洲国产成人私人影院tom| 欧美国产激情二区三区| 一区二区三区在线不卡| 国精产品一区一区三区mba视频| 国产成人高清在线| 欧美影院精品一区| 欧美精品一区二区三区高清aⅴ | 一个色妞综合视频在线观看| 亚洲成人av福利| 国产成人免费在线| 欧美一区二区视频免费观看| 国产精品免费视频一区| 污片在线观看一区二区| 丰满少妇在线播放bd日韩电影| 欧美视频中文字幕| 国产精品天天摸av网| 亚洲一二三四在线观看| 国产91精品精华液一区二区三区 | 国产日产欧美一区二区视频| 香蕉成人伊视频在线观看| 成人av综合一区| 精品88久久久久88久久久| 日韩国产欧美视频| 色综合久久天天综合网| 亚洲免费观看高清完整版在线 | 一区二区三区在线免费视频| 激情小说亚洲一区| 欧美日韩黄色影视| 日韩精品乱码免费| 7777精品伊人久久久大香线蕉最新版| 成人欧美一区二区三区小说| 国产99久久久国产精品潘金| 国产网站一区二区三区|