Tech-Ecke / Delphi Inhalt / IdFTP Komponente

 

     IdFTP Komponente

 

   Vorab

Die Indy-Komponentensammlung bietet zahlreiche Komponenten rund ums Internet, von HTTP über FTP bis hin zu POP3 und SMTP. Die hier gezeigten Codeschnipsel wurden für die Version 10.0.52 erstellt, sollten aber auch für andere Versionen gültig sein. Bei neueren Delphi-Versionen ist diese Komponentensammlung bereits enthalten, bei älteren Versionen kann man das Paket aber auch kostenlos im Internet bei indyproject downladen. Wie externe Komponenten eingebunden werden steht hier.

   Mit dem FTP Server verbinden

Zunächst muss die Komponente IdFTP auf die Form gezogen werden. Zum Verbinden nimmt man folgenden Code:

  try
   IdFTP1.Username :=('BenutzerName');
   IdFTP1.Password := ('passwort');
   IdFTP1.Host := ('ftp.server.de');
   IdFTP1.Connect;
   showmessage('verbunden mit FTP-Server');
except
      on E: Exception do Application.MessageBox (PChar(E.Message),'Verbindungsfehler!',MB_OK);
end;
 

Vom Server trennen

  IdFTP1.Quit;
 

   Dateioperationen

  IdFTP1.ChangeDir('Verzeichnisname');   // In ein Unterverzeichnis springen (auf dem Server)

IdFTP1.Get('QuellFTPDatei.jpg','C:\ZielLokalDatei.jpg',true);   // Datei herunterladen

IdFTP1.Put('C:\Datei.txt','DateiFTPName', false);   // Datei hochladen

IdFTP1.Delete('Dateiname');   // Datei löschen

IdFTP1.List(ListBox1.Item,'',false);   // Inhalt eines Verzeichnisses auflisten (benötigt hier im Beispiel eine TListBox)

IdFTP1.MakeDir('NeuesVerzeichnis');   // Ein Unterverzeichnis erzeugen

IdFTP1.RemoveDir('Verzeichnisname');   // Ein Unterverzeichnis löschen (geht nur wenn das Verzeichnis leer ist)
 

   Progressbar

Für eine Fortschrittsanzeige nutzt man die drei Ereignisse OnWorkBegin, OnWork und OnWorkEnd .

1) OnWorkBegin

Bei OnWorkBegin übergibt man die Dateigröße als Integer der Progressbar als maximale Position.

   ProgressBar1.Max := AWorkCountMax;
 

2) OnWork

Bei OnWork wird der aktuelle Fortschritt des Down bzw. Uploads als Integer übergeben

   ProgressBar1.Position := AWorkCount;
 Application.ProcessMessages;
 

3) OnWorkEnd

Bei OnWorkEnd wird die Prgressbar wieder auf null gesetzt

   ProgressBar1.Position := 0;
 

   AntiFreeze

Wenn die Indy-Komponenten aktiv ist, also wenn sie Daten vom und zum FTP-Client transferiert, dann "friert" das Fenster der Anwendung Anwendung ein und lässt sich nicht mehr aktualisieren, was sich bei Verwendung einer Progressbar denkbar ungünstig ist. Um diesen unerwünschten Effekt zu unterdrücken dient die Komponente AntiFreeze. Die Komponenten wird einfach auf die Form gezogen und im Objektinspektor die Eigenschaft OnlyWhenIdle auf False gesetzt, und gut is.

Die Option Drucken funktioniert erst ab Netscape V4.0 bzw. I-Explorer 5.0 !

[letzte Aktualisierung 07.01.2012]