Here you go, this is Delphi.
Form1
- 3 Edit boxes, named: edServer, edUsername, edPassword
- 1 Memo box named: edOutput
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Unit2;
type
TForm1 = class(TForm)
btnDisconnect: TButton;
btnConnect: TButton;
edUsername: TEdit;
edPassword: TEdit;
edServer: TEdit;
edOutput: TMemo;
procedure btnConnectClick(Sender: TObject);
private
{ Private declarations }
ThreadFTP: TidFTPThread;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btnConnectClick(Sender: TObject);
begin
ThreadFTP := TidFTPThread.Create(true);
ThreadFTP.LoginInfo(edUsername.Text, edPassword.Text, edServer.Text);
ThreadFTP.Resume;
end;
end.
here is the thread class
unit Unit2;
interface
uses
Classes, SysUtils,IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdExplicitTLSClientServerBase, IdFTP;
type
TidFTPThread = class(TThread)
private
{ Private declarations }
Fftp: TidFTP;
FUser: string;
FPass: string;
FServer: string;
FMemoMessage: string;
public
procedure LoginInfo(User, Pass, Server: string);
protected
procedure Execute; override;
procedure UpdateMemo;
end;
implementation
uses Unit1;
{ TidFTPThread }
procedure TidFTPThread.LoginInfo(User, Pass, Server: string);
begin
FUser := User;
FPass := Pass;
FServer := Server;
end;
procedure TidFTPThread.UpdateMemo;
begin
Form1.edOutput.Lines.Add(FMemoMessage);
end;
procedure TidFTPThread.Execute;
begin
FMemoMessage := 'Connecting to ' + FServer;
Synchronize(UpdateMemo);
Fftp := TidFTP.Create(nil);
Fftp.Username := FUser;
Fftp.Password := FPass;
Fftp.Host := FServer;
try
try
Fftp.Connect;
FMemoMessage := 'Connected to ' + FServer + #13#10 + 'Changing directory';
Synchronize(UpdateMemo);
Fftp.ChangeDir('<CHANGE TO DIR WHERE YOU NEED FILE>');
FMemoMessage := 'Getting file...';
Synchronize(UpdateMemo);
Fftp.Get('<SOURCE FILENAME>','<DEST FILENAME>', true, false);
Fftp.Disconnect;
FMemoMessage := 'Disconnecting from ' + FServer;
Synchronize(UpdateMemo);
except on E:Exception do
begin
FMemoMessage := E.Message;
Synchronize(UpdateMemo);
end;
end;
finally
Fftp.Free;
end;
end;
end.
Hopefully this helps.