Hallo alle zusammen.
Ich versuche gerade eine Datei per IdFTP herunterzuladen. Damit die Progressbar auch den Fortschritt anzeigt, versuche ich die Dateigrösse auf dem Server mit: idftp.size herauszufinden.
Und eigentlich funktioniert es auch (also meistens)
Aber merkwürdgerweise kommt bei einzelnen Dateien (immer bei den selben) folgende Meldung:
Transfer Aborted Broken Pipe
Wenn ich dann die zwei Zeilen rausnehme, also ohne Fortschrittanzeige, dann funktionierts bei allen Dateien:
Delphi-Quellcode:
BytesToTransfer:= IdFTP1.Size(Listbox1.Items[i]);
bytestotransfer:=bytestotransfer div 1024;
Weiss jemand wo das Problem entsteht und wie man es lösen kann?
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
I: Integer;
search: string;
begin
ListBox1.Clear;
idftp1.ChangeDir(listbox2.Items[listbox2.ItemIndex]);
IdFTP1.List();
for I := 0 to IdFtp1.DirectoryListing.Count - 1 do
ListBox1.Items.Add(IdFtp1.DirectoryListing.Items[I].FileName);
search := '.';
if SendMessage(form1.ListBox1.Handle, lb_selectstring, - 1, Longint(PChar(search))) <> LB_ERR then listbox1.DeleteSelected;
search := '..';
if SendMessage(form1.ListBox1.Handle, lb_selectstring, - 1, Longint(PChar(search))) <> LB_ERR then listbox1.DeleteSelected;
if listbox1.Items.Count>0 then begin
for i := 0 to Listbox1.Items.Count - 1 do
begin
BytesToTransfer:= IdFTP1.Size(Listbox1.Items[i]);
bytestotransfer:=bytestotransfer div 1024;
IdFTP1.Get(Listbox1.Items[i], edit1.text+'\'+listbox1.Items[i], true);
end;
end else begin
Showmessage('Leider kann diese Datei nicht heruntergeladen werden. Sorry');
idftp1.ChangeDir('..');
end;
idftp1.ChangeDir('..');
end;