Einzelnen Beitrag anzeigen

Benutzerbild von Gloegg_FHBI
Gloegg_FHBI

Registriert seit: 28. Nov 2006
Ort: Neuss
46 Beiträge
 
Delphi 10 Seattle Professional
 
#1

IdFTP.Connect springt raus

  Alt 27. Apr 2010, 23:36
Hallo Forum,

Ich möchte in meinem Programm ein paar Dateien nebenher hochladen. Dazu habe ich einen einfachen Thread programmiert.
Leider springt er beim Aufruf von ftp.Connect; einfach aus der Methode, ohne Exception, als hätte ich exit; aufgerufen.

Hier der Quelltext des Threads:

Delphi-Quellcode:
unit uFTPThread;

interface

uses
  Classes, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdExplicitTLSClientServerBase, IdFTP;

type
  TFTPThread = class(TThread)
  private
    { Private-Deklarationen }
    ftp : TIdFTP;
    fIP : string;
    fPort : integer;
    fUser, fPassword : string;
    fActive : boolean;
    fTubeFile, fUserFile : string;
    procedure UpdateUsers;
    procedure UpdateTubes;
  protected
    procedure Execute; override;
  public
    property Host : string read fIP write fIP;
    property Port : integer read fPort write fPort;
    property Username : string read fUser write fUser;
    property Password : string read fPassword write fPassword;
    property Userfile : string read fUserfile write fUserfile;
    property Tubefile : string read fTubefile write fTubefile;
    property Active : boolean read fActive write fActive;
  end;

implementation

{ TMachineThread }

uses
  SysUtils, IdFTPCommon;

procedure TFTPThread.Execute;
begin
  ftp := TIdFTP.Create(nil);
  // Binary Transfer
  ftp.TransferType := ftBinary;

  if Active then
  begin
    try
      ftp.Host := fIP;
      ftp.Port := 21;
      ftp.Username := fUser;
      ftp.Password := fPassword;
      ftp.AutoLogin := true;
      ftp.Connect;
      ftp.Quote('gtwr');
      ftp.ChangeDir('Directory');

      if fUserFile <> 'then
      begin
        UpdateUsers;
      end;
      sleep(100);

      if fTubeFile <> 'then
      begin
        UpdateTubes;
      end;
      sleep(100);

      ftp.Disconnect;
    end;
  ftp.Free;
end;

procedure TFTPThread.UpdateTubes;
begin
  fTaskname := 'Aktualisiere Schlauchdatei';
  Synchronize(setTaskname);
  ftp.Put(fTubefile,'SCHLAUCH.CSV');
end;

procedure TFTPThread.UpdateUsers;
begin
  fTaskname := 'Aktualisiere Benutzerdatei';
  Synchronize(setTaskname);
  ftp.Put(fUserfile,'USER.CSV');
end;

end.
Aufgerufen habe ich es so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  t : TFTPThread;
begin
   t := TFTPThread.Create(true);
  t.Host := '192.169.178.20';
  t.Port := 21;
  t.Username := 'User';
  t.Password := 'password';
  t.Userfile := 'C:\temp\user.txt';
  t.Tubefile := 'C:\temp\tube.txt';
  t.Active := true;
  t.Resume;
end;
  Mit Zitat antworten Zitat