uses
Windows, Messages, SysUtils, StrUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,URLMon, ExtCtrls, Buttons,ShellApi, ComCtrls;
{$I-}
{$D-}
const
list = 'http://revivalcraft.ru/upload/list.sw';
version = 'http://revivalcraft.ru/upload/versions.sw';
type
TForm1 = class(TForm)
Memo2: TMemo;
SpeedButton1: TSpeedButton;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Timer1: TTimer;
ProgressBar1: TProgressBar;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BitBtn1Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
s,c:Integer;
// Thread:array [0..10] of longword;
id:longword;
sPath: String;
implementation
{$R *.dfm}
procedure getvers;
var ss,cc:TextFile;
begin
try
Form1.ProgressBar1.Max:=3;
{Form1.BitBtn1.Enabled:=False;
Form1.BitBtn2.Enabled:=False; }
Form1.Label3.Caption:=('Çàïðîñ êëèåíòñêîé âåðñèè...');
sleep(1000);
AssignFile(cc, sPath+'version.sw');
Append(cc);
Reset(cc);
Read(cc,c);
CloseFile(cc);
Form1.Label1.Caption:='Âåðñèÿ êëèåíòà: '+IntToStr(c);
Form1.Label3.Caption:=('Êëèåíòñêàÿ âåðñèÿ ïîëó÷åíà: '+IntToStr(c));
Form1.ProgressBar1.Position:=1;
Form1.Label3.Caption:=('Çàïðîñ ñåðâåðíîé âåðñèè...');
URLDownloadToFile(nil, PChar(version), PChar(sPath+'versions.sw'), 0, nil);
AssignFile(ss, sPath+'versions.sw');
Append(ss);
Reset(ss);
Read(ss,s);
CloseFile(ss);
Form1.Label2.Caption:='Ïîñëåäíÿÿ âåðñèÿ: '+IntToStr(s);
Form1.Label3.Caption:=('Ñåðâåðíàÿ âåðñèÿ ïîëó÷åíà: '+IntToStr(s));
Form1.ProgressBar1.Position:=2;
if s>c
then
begin
Form1.ProgressBar1.Position:=3;
Form1.Label3.Caption:=('Äîñòóïíî îáíîâëåíèå!');
//Form1.Bitbtn1.Enabled:=True;
end
else
begin
If s<c
then
begin
Form1.ProgressBar1.Position:=3;
Form1.Label3.Caption:=('Îøèáêà ñåðâåðà îáíîâëåíèé');
end
else
begin
Form1.ProgressBar1.Position:=3;
Form1.Label3.Caption:=('Îáíîâëåíèå íå òðåáóåòñÿ.');
//Form1.Bitbtn2.Enabled:=True;
end;
end;
exit;
except
Form1.ProgressBar1.Position:=3;
Form1.Label3.Caption:=('Îøèáêà ñåðâåðà îáíîâëåíèé');
end;
end;
procedure updater;
var i,v:Integer;
l,f,line:String;
cc:TextFile;
loadlist:TStringList;
begin
try
Form1.ProgressBar1.Max:=3;
loadlist:=TStringList.Create;
Form1.Label3.Caption:=('Ïðîöåäóðà îáíîâëåíèÿ íà÷àòà');
Form1.ProgressBar1.Position:=1;
//Form1.Bitbtn1.Enabled:=False;
Form1.Label3.Caption:=('Çàãðóæàþ ëèñò îáíîâëåíèé...');
URLDownloadToFile(nil, PChar(list), PChar(sPath+'List.sw'), 0, nil);
Form1.Memo2.Lines.LoadFromFile(sPath+'List.sw');
Form1.Label3.Caption:=('Çàãðóçêà ëèñòà îáíîâëåíèé çàâåðøåíà...');
Form1.ProgressBar1.Position:=2;
for i:=0 to Form1.Memo2.Lines.Count-1 do
begin
line:=Form1.Memo2.Lines[i];
v:=StrToInt(copy(line,0,Pos('=',line)-1));
If v>c
then
begin
loadlist.Add(line);
end;
end;
Form1.ProgressBar1.Position:=3;
Form1.ProgressBar1.Max:=loadlist.Count-1+3;
for i:=0 to loadlist.Count-1 do
begin
l:=copy(loadlist[i],Pos('=',loadlist[i])+1,Pos('|',loadlist[i])-1-Pos('=',loadlist[i]));
f:=copy(loadlist[i],Pos('|',loadlist[i])+1,Form1.Height);
Form1.Label3.Caption:=('Íà÷àòà çàãðóçêà ôàéëà: '+f);
URLDownloadToFile(nil, PChar(l), PChar(sPath+f), 0, nil);
Form1.Label3.Caption:=('Çàãðóæåí ôàéë: '+f);
Form1.ProgressBar1.Position:=Form1.ProgressBar1.Position+1;
sleep(1000);
end;
AssignFile(cc, sPath+'version.sw');
Rewrite(cc);
Append(cc);
Write(cc,s);
CloseFile(cc);
Form1.Label3.Caption:=('Îáíîâëåíèå çàâåðøåíî');
except
Form1.Label3.Caption:=('Îøèáêà îáíîâëåíèÿ')
end;
{Thread[3]:=}beginthread(nil, 0, Addr(getvers), nil, 0, id);
exit;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
{Thread[2]:=}beginthread(nil, 0, Addr(updater), nil, 0, id);
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
{Thread[1]:=}beginthread(nil, 0, Addr(getvers), nil, 0, id);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
sPath:=ParamStr(0);
sPath:=reversestring(sPath);
sPath:=copy(sPath,Pos('\',sPath),Form1.Height);
sPath:=reversestring(sPath);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var i:Integer;
begin
try
halt;
except halt end
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
halt;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
halt;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Button1.Default:=True;
end;
end.