Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 333

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
Поправте код, по окончании получения файла сильно
зависает форма

Приложение:
  1. procedure TForm1.Download2Click(Sender: TObject);
  2. var
  3. FDataStream : TStream;
  4. begin
  5. if FTP.Active then
  6. begin
  7. if edit1.Text+'/'+LView.Selected.Caption = '' then
  8. begin
  9. ShowMessage(sNoParameter);
  10. end
  11. else
  12. begin
  13. Save1.Filename := ExtractFileName(edit1.Text+'/'+LView.Selected.Caption);
  14. if Save1.Execute then
  15. try
  16. Application.ProcessMessages;
  17. FDataStream := TFileStream.Create(Save1.Filename, fmCreate,fmOpenReadWrite);
  18. try
  19.  
  20. //ProgressBar1..Min := 0;
  21. try
  22. try
  23. Application.ProcessMessages;
  24. FTP.Receive(edit1.Text+'/'+LView.Selected.Caption, FDataStream, 0, 0);
  25. finally
  26. end;
  27. except
  28. on E : EOperationCancelledError do ;
  29. end;
  30. ProgressBar1.PartsComplete := 0;
  31.  
  32. finally
  33. FDataStream.Free;
  34. end;
  35. except
  36. on E : Exception do
  37. Log(E.Message, true);
  38. end;
  39. end;
  40. end
  41. else
  42. Log(sNotConnected, true);
  43. end;


Vit2 Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Vit2 (статус: Посетитель)
Вопрос отправлен: 11 февраля 2008, 21:39
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 3; последнее сообщение — 14 февраля 2008, 22:17; участников в обсуждении: 3.
min@y™

min@y™ (статус: Доктор наук), 12 февраля 2008, 08:32 [#1]:

А ты уверен, что виснет ПОСЛЕ получения файла? А не ВО ВРЕМЯ его получения, случайно? Мне от чего-то кажется, что проблема в строке
FTP.Receive(edit1.Text+'/'+LView.Selected.Caption, FDataStream, 0, 0);
Т.е. пока файло качается, прога и не реагирует. Советую прогнать под отладчиком.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Dron

Dron (статус: Студент), 14 февраля 2008, 20:55 [#2]:

1) Вы не указали, что за компонент FTP. От этого зависит многое. Быть может, в нём есть функция синхронизации при загрузке файла, а может и нет.
2) Соглашусь с min@y: проблема в вызове метода Receive.
3) Случайно обратил внимание на строку
if edit1.Text+'/'+LView.Selected.Caption = '' then
А вы не отдаёте себе отчёт в том, что даже если 1 и 3 строки пустые, то, прибавляя к ним слеш, результирующая строка уже не будет пустой?
С уважением.
Vit2

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

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:45
Выполнено за 0.02 сек.