Einzelnen Beitrag anzeigen

gee21

Registriert seit: 3. Jan 2013
199 Beiträge
 
Delphi 10.4 Sydney
 
#1

idftp: Transfer Aborted Broken Pipe

  Alt 6. Apr 2014, 21:21
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;
Robert
  Mit Zitat antworten Zitat