Thema: Delphi FTP via Indy

Einzelnen Beitrag anzeigen

tferl

Registriert seit: 5. Okt 2006
Ort: SBK
5 Beiträge
 
Delphi 7 Professional
 
#1

FTP via Indy

  Alt 6. Okt 2010, 13:55
Hallo Zusammen,

eigentlich ist es ja recht einfach via FTP einen Download zu realisieren.
Aber nach der Umstellung auf Delphi2010 hab ich einige Probleme.

Den angehängten (vereinfachten) Code benutze ich, um eine Reihe von Exceldateien regelmäßig von einem FTP-Server abzuholen.
In einer global verfügbaren Struktur mit dem Namen "Ini" sind alle benötigten Informationen korrekt enthalten.
Die Klasse FTP wurde als Komponente ins Formular gezogen.
Der Transfertyp steht auf ftBinary - ich hab's beim Debuggen überprüft.

Nach Abarbeitung der Funktion sind die Excel-Dateien zwar auf der lokalen Maschine, jedoch sind diese nicht mehr lesbar.
Durch den Transport werden alle Dateien (egal ob Excel oder sonstwas) zerstört.

Ein Download mittels Explorer funktioniert und liefert auch korrekte Dateien.....

Hat irgendjemand eine Idee, was ich hier falsch mache.

Ich benutze Delphi2010 Enterprise mit den Indy-Komponenten im Original-Auslieferungszustand.


Function Download:Boolean;
Var
FList :TStringList;
i :Integer;
Source,
Dest : String;

begin

FTP.Host := ini.FTPHost;
FTP.Username := ini.FTPSer;
FTP.Password := ini.FTP_Password;
FTP.Transfertype := ftBinary;

Try
FTP.Connect;
Except
EXIT;
end;

// Versuche ins Quellverzeichnis zu wechseln .....
Try
FTP.ChangeDir(ini.FTP_SourceDir);
Except
EXIT;
end;

Application.ProcessMessages;

// lesen des Verzeicnisinhaltes
FList := TStringList.Create;

FTP.List(FList,'',FALSE);

// alle Dateien durchlaufen und XLS-Files via FTP.Get() abholen
For i:=0 to FList.Count-1 do
Begin

Source := FList[i];

If Pos('.XLS',Uppercase(Source)) > 0 Then
Begin

Dest := Ini.LocalDir + Source;

Try
FTP.Get(Source , Dest , True);
Except
//....
End;
End

End;

FList.Free;

end;

Geändert von tferl ( 6. Okt 2010 um 16:15 Uhr)
  Mit Zitat antworten Zitat