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

📄 sws_update.pas

📁 本程序是在vagrant的升级程序上增加了SQL数据库的更新升级功能系统中采用了ACCES来存储数据更新的指令 从而达到逐步执行SQL代码的功能
💻 PAS
📖 第 1 页 / 共 2 页
字号:
      zeromemory(@buf1, sizeof(buf1));
      rec1 := Form_Update.ClientSocket1.Socket.ReceiveBuf(buf1, sizeof(buf1));
      If real_reclen1 >= reclen1 Then
      Begin
        //showmessage('文件已经下载完毕了!');
        result := true;
        Form_Update.Memo1.Lines.Add(Form_update.serfilename + '实际收到文件长度大于服务器标识长度,跳过下载' + #13#10);
        break;
      End;
      If pos1 = reclen1 Then
      Begin
        //showmessage('文件已经下载完毕了!');
        result := true;
        Form_Update.Memo1.Lines.Add(Form_update.serfilename + '当前长度大于服务器标识长度,跳过下载' + #13#10);
        break;
      End;
      blockwrite(f1, buf1, rec1);
      real_reclen1 := real_reclen1 + rec1;

      //显示下载进度
      Form_Update.RzLabel4.caption := '共 ' + FormatFloat('#,##', reclen1) + ' 字节,已下载 ' + FormatFloat('#,##', real_reclen1) + ' 字节';
      Form_Update.Gauge_process.MaxValue := reclen1;
      Form_Update.Gauge_process.Progress := real_reclen1;
      application.ProcessMessages;
    End;
    closefile(f1);
    Form_Update.ClientSocket1.Active := false;
  Except
    closefile(f1);
    result := false;
    Form_Update.Memo1.lines.add(Form_update.serfilename + '服务器连接失败,取消下载' + #13#10);
  End;
End;

Procedure TForm_Update.ListBox_serversClick(Sender: TObject);
Var i               : integer;
Begin
  Edt_url.Text := '';
  For i := 0 To ListBox_servers.Items.Count - 1 Do
    If ListBox_servers.Selected[i] Then
    Begin
      Try
        AppIni := TIniFile.Create(g_path + '\chis.ini');
        Edt_url.Text := AppIni.ReadString('update', ListBox_servers.Items[i], 'http://');
      Finally
        AppIni.Free;
      End;
    End;
End;

Procedure TForm_Update.FormShow(Sender: TObject);
Begin
  btn_next.SetFocus;
  RzPageControl1.HideAllTabs;
End;

Procedure TForm_Update.FormClose(Sender: TObject;
  Var Action: TCloseAction);
Begin
  Try
    HTTPFiles.Disconnect;
  Except
  End;
  files.Free;
End;

Function TForm_Update.ExistNewFile: Boolean;
Var i {, iFileHandle}: integer;
  filestr           : TStringList;
Begin
  result := false;
  filestr := TStringList.Create;

  files.Clear;
  Try
    If copy(Edt_url.Text, length(Edt_url.Text), 1) <> '/' Then
      Edt_url.Text := Edt_url.Text + '/';
    filestr.Add(HTTPFiles.Get(Edt_url.Text + sys_id + '.htm'));
    filestr.SaveToFile(g_path + 'update\update.ini');
    filestr.Free;

  Except
    MessageBox(handle, '取得升级信息出错!', '错误提示', MB_OK + MB_ICONERROR);
    exit;
  End;
  files.Clear;
  Try
    AppIni := TIniFile.Create(g_path + '\update\update.ini');
    AppIni.ReadSections(files);
  Finally
    AppIni.Free;
  End;
  result := true;
End;

Procedure TForm_Update.FormCloseQuery(Sender: TObject;
  Var CanClose: Boolean);
Begin
  CanClose := true;
  If HTTPFiles.Connected Then
  Begin
    If MessageBox(handle, '正在下载文件,要退出吗?', '信息提示', MB_YESNO + MB_ICONQUESTION) = ID_YES Then
      CanClose := true
    Else
      CanClose := false;
  End;
  If btn_next.Caption = '完成升级' Then
  Begin
    If MessageBox(handle, '文件下载已经完成,但并没有更新文件,要退出吗?', '信息提示', MB_YESNO + MB_ICONQUESTION) = ID_YES Then
      CanClose := true
    Else
      CanClose := false;
  End;
End;

Procedure TForm_Update.Button1Click(Sender: TObject);
Begin
  RzPageControl1.ActivePageIndex := 2;
End;

Procedure TForm_Update.Button2Click(Sender: TObject);
Begin
  sj := false;
  self.stop1 := true;
  memo1.Lines.Add('已中断下载;' + #13#10);
//  self.Close;
End;

Procedure TForm_Update.RzPageControl1Change(Sender: TObject);
Begin
  If RzPageControl1.ActivePageIndex = 0 Then
  Begin
    btn_pre.Enabled := false;
    btn_next.Caption := '下一步';
    btn_next.Enabled := true;
  End
  Else
    btn_pre.Enabled := true;
End;

Procedure TForm_Update.btn_preClick(Sender: TObject);
Begin
 //button2.Click;
  Try
    HTTPFiles.Disconnect;
  Except
  End;
  RzPageControl1.ActivePageIndex := 0;
  btn_next.Caption := '下一步';
  btn_next.Enabled := true;
End;

Procedure TForm_Update.btn_nextClick(Sender: TObject);
Var i               : integer;
  run_exe, host1, file1: String;
  Flist             : TListItem;
  myblob            : TStream;
  fd                : Tdatetime;
  allget            : boolean;
Begin
  If btn_next.Caption = '完成升级' Then
  Begin
    btn_next.Enabled := false;
    btn_next.Caption := '复制新文件..';
    button2.Enabled := false;
    For i := 0 To files.Count - 1 Do    //复制文件更新
    Begin
      copyfile(pchar(g_path + files[i]), pchar(g_path + 'backup\' + files[i] + '.bak'), false);
    End;
    For i := 0 To files.Count - 1 Do    //从update复制新文件
    Begin
      copyfile(pchar(g_path + 'update\' + files[i]), pchar(g_path + files[i]), false);
      DeleteFile(pchar(g_path + 'update\' + files[i])); //删除update目录中的升级文件
    End;
    Try
      AppIni := TIniFile.Create(g_path + 'chis.ini');
      run_exe := AppIni.ReadString('chis', 'exe', '');
      If run_exe <> '' Then
        shellexecute(handle, 'open', pchar(run_exe), Nil, Nil, sw_show);
    Finally
      AppIni.Free;
    End;
//    application.Terminate;
    exit;
  End;

  Gauge_process.MaxValue := 100;
  Gauge_process.Progress := 0;
  ListView_files.Items.Clear;
  Flist := ListView_files.Items.Add;
  Flist.Caption := '分析文件升级信息...';
  Flist.StateIndex := 0;
  Flist.ImageIndex := 0;
  RzPageControl1.ActivePageIndex := 1;
  If ExistNewFile Then                  //如果存在升级信息
  Begin
    ListView_files.Items.Clear;
    Gauge_process.Progress := 0;
    For i := 0 To files.Count - 1 Do
    Begin
      Flist := ListView_files.Items.Add; //把待升级文件信息写入列表
      Flist.Caption := files[i];
      Flist.StateIndex := -1;
      Flist.ImageIndex := -1;
    End;
    //下载升级文件
    btn_next.Enabled := false;
    btn_next.Caption := '连接中!';
    button2.Enabled := true;
    Try
      AppIni := TIniFile.Create(g_path + 'update\update.ini');
      For i := 0 To files.Count - 1 Do
      Begin
        ListView_files.Items[i].StateIndex := 0;
        ListView_files.Items[i].ImageIndex := 0;
        listview_files.Items[i].SubItems.Add(appini.ReadString(files[i], 'datetime', ''));
        host1 := Edt_url.Text + files[i];
        file1 := g_path + 'update\' + files[i];
        file1 := StringReplace(file1, '/', '\', [rfReplaceAll]);
        memo1.Lines.Add('连接远程文件:' + host1 + #13#10);
        If getfiledate(files[i], fd) Then
        Begin
          If fd < strtodatetime(Appini.ReadString(files[i], 'datetime', '')) Then
          Begin
            listview_files.Items[i].SubItems.Append('需要升级');
            If Download(host1, file1) Then
            Begin
              allget := true;
              ListView_files.Items[i].StateIndex := 1;
              ListView_files.Items[i].ImageIndex := 1;
            End
            Else
            Begin
              allget := false;
              ListView_files.Items[i].StateIndex := 2;
              ListView_files.Items[i].ImageIndex := 2;
            End;
          End
          Else
          Begin
            allget := true;
            listview_files.Items[i].SubItems.Append('不需更新');
            ListView_files.Items[i].StateIndex := 3;
            ListView_files.Items[i].ImageIndex := 3;
            memo1.Lines.Add(listview_files.Items[i].Caption + '文件不需要更新,跳过下载' + #13#10);
          End;
        End
        Else
        Begin
          listview_files.Items[i].SubItems.Append('需要创建');
          If Download(host1, file1) Then
          Begin
            allget := true;
            ListView_files.Items[i].StateIndex := 1;
            ListView_files.Items[i].ImageIndex := 1;
          End
          Else
          Begin
            allget := false;
            ListView_files.Items[i].StateIndex := 2;
            ListView_files.Items[i].ImageIndex := 2;
          End;
        End;

      End;
    Finally
      button2.Enabled := false;
      AppIni.Free;
      HTTPfiles.Disconnect;
    End;
    btn_next.Enabled := true;
    sj := sj Or allget;
    If (RzPageControl1.ActivePageIndex = 1) And sj
      Then
      btn_next.Caption := '完成升级'
    Else
      btn_next.Caption := '继续下载';
  End;
End;

Procedure TForm_Update.RzBitBtn1Click(Sender: TObject);
Var datastring, sqlstring: widestring;
  i                 : integer;
  myinifile         : Tinifile;
  strUser, strServer: String;
  filename          : String;
Begin
  self.RzPageControl1.ActivePageIndex := 3;
  filename := ExtractFilePath(Paramstr(0)) + 'mentorouser.ini';
  myinifile := Tinifile.Create(filename);
  strServer := myinifile.ReadString('messages', 'server', '(local)');
  strUser := myinifile.ReadString('messages', 'dataname', '(local)');
  Try
    ADOConnection1.Connected := false;
    datastring := 'Provider=SQLOLEDB.1;Password=mentoro;Persist Security Info=False;User ID=mentorologin;Initial Catalog=' + strUser + ';Data Source=' + strServer;
    ADOConnection1.ConnectionString := datastring;
    ADOConnection1.Connected := true;
    ADOTable1.Active := FALSE;
    ADOTable1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Password="";Data Source=SQLtext.mdb;Persist Security Info=True';
    ADOTable1.TableName := 'SQLTEXT';
    ADOTable1.Active := TRUE;
    RzProgressBar1.TotalParts := ADOTable1.RecordCount;
    While Not ADOTable1.Eof Do
    Begin
      ADOQuery1.ParamCheck := false;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.add(ADOTable1.FieldByName('命令').asstring);
      memo2.Lines.Add(ADOTable1.FieldByName('命令').asstring);
      ADOQuery1.execsql;
      ADOTable1.Next;
      RzProgressBar1.PartsComplete := RzProgressBar1.PartsComplete + 1;
    End;
    MessageBox(Handle, '数据升级成功!请保证您的管理系统也是最新的!', '操作提醒', MB_ICONASTERISK);
  Except
    MessageBox(Handle, '数据升级失败!', '操作提醒', MB_ICONHAND);
  End;
  RzProgressBar1.TotalParts := 0;

End;

End.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -