Hallo
Ich Arbeite derzeit mit Delphi2009 und bringe ein altes Project von mir auf den aktuellsten Stand. Dabei lade ich von diversen
FTP-Servern jeweils ein Verzeichnis herunter und lege die Dateien in einer Struktur auf der Festplatte zur weiteren Bearbeitung aus.
Das hat soweit auch immer gut geklappt. Nun hab ich schon mitgekommen das die Erkennung der Dateinamen nicht mehr so ist wie bei Delphi2007 - aber das hab ich hinbekommen. Mein Programm liest nun wieder korrekt die Dateien in dem
ftp-Verzeichnis ein und zeigt in der Listbox die Namen und die Dateigröße korrekt an. Nach einer Prüfung ob die Datei schon auf der Platte ist startet der Download. Die erzeugten Dateien sind aber immer nur 5 Byre groß.
Ein normaler Zugriff mit beliebigen
FTP-Programmen geht ohne Probleme.
Hier ein Auszug aus dem Script
Delphi-Quellcode:
procedure TForm1.ButtonClick(Sender: TObject);
var i : integer;
count : integer;
name : string;
basedir : string; // Verzeichnis auf der Festplatte
currentdir : string; // Ordner auf dem Server
ftplist : TIdFtpListItems;
ftpfile : TFileStream;
begin
if IdFTP1.connected = false then
begin
IdFTP1.Username := 'xxxxxx';
IdFTP1.Password := 'xxxxxx';
IdFTP1.Host := '123.123.123.123';
IdFTP1.Passive := TRUE;
basedir := 'z:\projekt\eingang-xxx\';
currentdir := 'subdir123';
IdFTP1.Connect;
IdFTP1.ChangeDir(currentdir);
IdFTP1.List;
ftplist := IdFTP1.DirectoryListing;
count := ftplist.Count;
for i := 1 to Count do
begin
name := ftplist[i-1].FileName;
if ftplist[i-1].ItemType = ditFile then
begin
Listbox1.items.add(name+' ('+IntToStr(ftplist[i-1].Size)+')');
if FileExists(basedir+currentdir+'\'+name) = FALSE then
IdFTP1.Get(name,basedir+currentdir+'\'+name);
// ALTERNATIV habe ich das auch schon versucht mit dem gleichen Ergebnis.
// ftpfile := TFileStream.Create(basedir+currentdir+'\'+name, fmCreate);
// try
// IdFTP1.Get(name,ftpfile);
// finally
// FreeAndNil(ftpfile);
// end;
end;
end;
IdFTP1.Quit;
iDFTP1.Disconnect;
end;
end;