📄 u_update.~pas
字号:
unit U_Update;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ComCtrls, ShellAPI, ADODB, IniFiles, U_TDownFile;
type
TF_Update = class(TForm)
ProBar: TProgressBar;
bbtnUpdate: TBitBtn;
bbtnRunSoft: TBitBtn;
procedure bbtnUpdateClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure bbtnRunSoftClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
AppPath,NetPath,DeleteFileStr,UpdateFileStr:String; //系统路径
Procedure CreateStrList;
Procedure ImpUpdateInfo;
Procedure SeperateStrToStrList(Str, Ch: string; Mystring: TStrings);
{ Private declarations }
public
{ Public declarations }
end;
var
F_Update: TF_Update;
implementation
Uses U_PulicPack;
{$R *.dfm}
procedure TF_Update.bbtnUpdateClick(Sender: TObject);
Var
i:integer;
aStr:String;
begin
ProBar.StepBy(1);
For i:= 0 to DeleteList.Count-1 do //删除是删除本地文件
begin
aStr := AppPath + DeleteList.Strings[i]; //判断本地文件是否存在
if FileExists(aStr) then
DeleteFile(aStr);
end;
For i:= 0 to UpdateList.Count-1 do //更新是更新本地文件
begin
aStr := Url + UpdateList.Strings[i];
ProBar.StepBy(1);
FDownFile.DownFile(aStr,AppPath+UpdateList.Strings[i]);
end;
if ProBar.Position = ProBar.Max then
MessageBox(0,PChar('恭喜你! 升级完成! 共更新 '+ IntToStr(UpdateList.Count) +' 个文件! :)'),Prompt,mrNone);
end;
procedure TF_Update.FormCreate(Sender: TObject);
begin
AppPath := ExtractFilePath(ParamStr(0));
CreateStrList;
FDownFile := TDownFile.Create(Self);
//InitConfigInfo;
//CreateAndInitComponents;
ImpUpdateInfo;
ProBar.Max := UpdateList.Count + 1 ;
end;
procedure TF_Update.bbtnRunSoftClick(Sender: TObject);
Var
aStr:String;
begin
aStr:=AppPath+RunFile;
if FileExists(aStr) then
begin
ShellExecute(0, 'open', Pchar(aStr), nil, nil, SW_SHOWNORMAL);
Close;
end;
end;
procedure TF_Update.ImpUpdateInfo;
Var
i:integer;
aStr,aSql:String;
MyIni:TIniFile;
begin
if UpdateList<>nil then
begin
For i:=UpdateList.Count-1 DownTo 0 do
UpdateList.Delete(i);
end;
if DeleteList<>nil then
begin
For i:=DeleteList.Count-1 DownTo 0 do
DeleteList.Delete(i);
end;
MyIni := TIniFile.Create(AppPath+UpdateFile);
Try
//Endo.exe,Help.chm
//MyIni.WriteString('Set','DeleteFileList','Endo.exe,Help.chm');
DeleteFileStr := ReadConfig(UpdateFile,'Set','DeleteFileList');
UpdateFileStr := ReadConfig(UpdateFile,'Set','UpdateFileList');
SeperateStrToStrList(DeleteFileStr,',',DeleteList);
SeperateStrToStrList(UpdateFileStr,',',UpdateList);
Finally
FreeAndNil(MyIni);
end;
end;
procedure TF_Update.CreateStrList;
begin
UpdateList := TStringList.Create;
DeleteList := TStringList.Create;
end;
procedure TF_Update.SeperateStrToStrList(Str, Ch: string;
Mystring: TStrings);
{字符串Str以Ch分隔成几段小字符串,该函数是将这些小字符串提取出来并保存在MyString中}
var
sit, n : integer;
S : string;
begin
if Mystring=nil then Exit;
//Str:=StringReplace(Str,' ','',[]);
if (Str='') Or (Ch='') then Exit;
MyString.Clear;
S := Str;
n := Length(Ch);
while True do
begin
if Pos(Ch, S) = 0 then
begin
MyString.Add(S);
Break;
end;
sit := Pos(Ch, S);
MyString.Add(Copy(S, 1, sit - 1));
S := Copy(S, sit + n, Length(S));
end;
end;
procedure TF_Update.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FreeAllPoint;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -