| 
| 
 | Вопрос # 1 333/ вопрос открыт / | 
 |  Доброго времени суток, уважаемые эксперты!Поправте код, по окончании получения файла сильно
 зависает форма
 Приложение:Переключить в обычный режим procedure TForm1.Download2Click(Sender: TObject);varFDataStream : TStream;begin  if FTP.Active then  begin    if edit1.Text+'/'+LView.Selected.Caption = '' then    begin      ShowMessage(sNoParameter);    end    else    begin      Save1.Filename := ExtractFileName(edit1.Text+'/'+LView.Selected.Caption);      if Save1.Execute then      try        Application.ProcessMessages;        FDataStream := TFileStream.Create(Save1.Filename, fmCreate,fmOpenReadWrite);        try           //ProgressBar1..Min := 0;          try            try             Application.ProcessMessages;              FTP.Receive(edit1.Text+'/'+LView.Selected.Caption, FDataStream, 0, 0);            finally            end;          except            on E : EOperationCancelledError do ;          end;          ProgressBar1.PartsComplete := 0;         finally          FDataStream.Free;        end;      except        on E : Exception do          Log(E.Message, true);      end;    end;  end  else    Log(sNotConnected, true);end;
|  |   Вопрос задал: Vit2 (статус: Посетитель)Вопрос отправлен: 11 февраля 2008, 21:39
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 3; последнее сообщение — 14 февраля 2008, 22:17; участников в обсуждении: 3. 
|   | min@y™ (статус: Доктор наук), 12 февраля 2008, 08:32 [#1]:А ты уверен, что виснет ПОСЛЕ получения файла? А не ВО ВРЕМЯ его получения, случайно? Мне от чего-то кажется, что проблема в строке 
 FTP.Receive(edit1.Text+'/'+LView.Selected.Caption, FDataStream, 0, 0);Т.е. пока файло качается, прога и не реагирует. Советую прогнать под отладчиком. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Dron (статус: Студент), 14 февраля 2008, 20:55 [#2]:1) Вы не указали, что за компонент FTP. От этого зависит многое. Быть может, в нём есть функция синхронизации при загрузке файла, а может и нет. 2) Соглашусь с min@y: проблема в вызове метода Receive.
 3) Случайно обратил внимание на строку
 
 if edit1.Text+'/'+LView.Selected.Caption = '' thenА вы не отдаёте себе отчёт в том, что даже если 1 и 3 строки пустые, то, прибавляя к ним слеш, результирующая строка уже не будет пустой? С уважением. |  
|   | Vit2 (статус: Посетитель), 14 февраля 2008, 22:17 [#3]:procedure TForm1.Download2Click(Sender: TObject); var
 FDataStream : TStream;
 begin
 Save1.Filename := (LView.Selected.Caption);
 if Save1.Execute then
 try
 Application.ProcessMessages;
 FDataStream := TFileStream.Create(Save1.Filename, fmCreate);
 try
 Application.ProcessMessages;
 FTP.Receive(FTP.GetCurrentDir+'/'+LView.Selected.Caption, FDataStream, 0, 0);
 finally
 FDataStream.Free;
 end;
 except
 on E : Exception do
 Log(E.Message, true);
 end;
 end;
 
 После того как проходит зависание, пишет вот "Control channel transfer error" Компонент из колекции SecureBlackbox
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |