Sure...
Button code that creates an instance of the class, and calls the Update_Appl_Libraries method that connects to the
ftp, transfers the files, and updates the progress bar on the main form.
Delphi-Quellcode:
type
TForm3 = class(TForm)
Button1: TButton;
MainProgress: TProgressBar;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
fo_Conn : TADOConnection;
public
{ Public declarations }
end;
var
Form3: TForm3;
Button code that creates the instance of the class
Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
var
oUpdateLib : Tdte_Update_Library_DB;
begin
oUpdateLib := Tdte_Update_Library_DB.Create(Fo_Conn);
//Set the Progress Bar on the main form to a class reference
oUpdateLib.Set_Progress_Bar := MainProgress;
if oUpdateLib.Update_Appl_Libraries then
begin
ShowMessage('Updates was installed, application will now restart.');
end;
end;
Delphi-Quellcode:
Class Method:
private
Fo_ProgressBar : TProgressBar;
public
property Set_Progress_Bar : TProgressBar READ Fo_ProgressBar WRITE Fo_ProgressBar;
{==============================================================================}
function Tdte_Update_Library_DB.Update_Appl_Libraries : Boolean;
var
oQry : TADOQuery;
sResult : String;
oFile_Version : Assembly;
oDBFile_Version : System.Version;
iPosInc : Integer;
iPos : Integer;
begin
if Flst_Libraries.Count = 0 then
begin
//Calculate the Directory structure of the source Directory.
CalcDirStructure(Flst_Libraries,sExePath,'*.dll');
CalcDirStructure(Flst_Libraries,sExePath,'*.exe');
end;
try
oQry := TADOQuery.Create(nil);
oQry.Connection := Fo_Connection;
oQry.SQL.Add('select * from lvr_Lib_Version_Ref');
oQry.Open;
Fo_ProgressBar.Position := 0;
iPosInc := Round(100 / oQry.RecordCount);
iPos := iPosInc;
while not oQry.Eof do
begin
Fo_ProgressBar.Position := iPos;
if FileExists(sExePath + oQry.FieldByName('lvr_Library').AsString) then
begin
oDBFile_Version := System.Version.Create(oQry.FieldByName('lvr_Version').AsString);
oFile_Version := Assembly.LoadFrom(sExePath + oQry.FieldByName('lvr_Library').AsString);
if oDBFile_Version.CompareTo(oFile_Version.GetName.Version) > 0 then
begin
Move_Old_Lib(oQry.FieldByName('lvr_Library').AsString);
f_fdn_b_FTP_File(Fs_FTP_Host,
Fs_FTP_User,
Fs_FTP_Pass,
Fs_FTP_Folder_Get + oQry.FieldByName('lvr_Library').AsString,
sExePath + oQry.FieldByName('lvr_Library').AsString,
sResult,21,'GET');
Result := True;
end;
end
else
begin //File does not exist on local machine,so just copy it.
f_fdn_b_FTP_File(Fs_FTP_Host,
Fs_FTP_User,
Fs_FTP_Pass,
Fs_FTP_Folder_Get + oQry.FieldByName('lvr_Library').AsString,
sExePath + oQry.FieldByName('lvr_Library').AsString,
sResult,21,'GET');
Result := True;
end;
FreeAndNil(oDBFile_Version);
FreeAndNil(oFile_Version);
oQry.Next;
iPos := iPos + iPosInc;
end;
finally
FreeAndNil(oQry);
Fo_ProgressBar.Position := 0;
end;
end;