[BCB][INDY]postęp pobierania

0

Właściwie noobowskie pytanie...

  1. Jak podczas pobierania metodą get() dowiedzieć się ile danych zostało już pobranych?
  2. Skąd odczytać rozmiar pobieranego pliku?
  3. Czy jednoczesne pobieranie i aktualizacja paska postępu będą wymagały 2 wątków?

Szukalem trochę, ale znalazłem tylko przykłady do delphi i nic z nich nie zrozumiałem.

0

co do 3 , czasami wystarczy tylko umożliwić aplikacji przetwarzanie komunikatów
za pomocą wywołania
Application->ProcessMessages();
w czasie wykonywania pętli w wątku głównym.
Help BCB ProcessMessages

0
dzejo napisał(a)

co do 3 , czasami wystarczy tylko umożliwić aplikacji przetwarzanie komunikatów
za pomocą wywołania
Application->ProcessMessages();
w czasie wykonywania pętli w wątku głównym.
Help BCB ProcessMessages
Jakiej pętli?

0

IdHTTP ma zdarzenia OnWork, OnWorkBegin i OnWorkEnd
w pierwszym jest AWorkCount czyli ile zostało pobrane czyli postęp, w drugim AWorkCountMax ile waży cały plik tu ustawiasz min i max paska postępu, a w trzecim można zresetować pasek postępu po zakończeniu pobierania.

0

kAzek, problem jest w tym, że IdHTTP->Get() zwraca kontrolę dopiero kiedy skończy ściąganie, a skoro nie ma kontroli to nie ma zdarzeń. A jak wsadziłem get() do 2. wątku to tak wszystko powaliłem że sam nie wiem co działało, ale onWork w 1. wątku nadal nie działało.

0

olo16 nic podobnego jak aplikacja się zamraża użyj IdAntiFreeze dopiero jeżeli to nie pomoże użyj wątku.

0

Już sobie poradziłem. IdAntiFreeze coś niezbyt chce działać, bo program nadal się "zawiesza", ale zrobienie paska postępu w OnWork jest możliwe.

Co ciekawe - w OnWork można zmieniać wartość StatusBar->Progress, i działa, ale próba zmiany wartości innych komponentów działać już nie chce - zmiana się zawiesza do czasu skończenia ściągania pliku. Ktoś wie dlaczego tak jest? Komponent StatusBar jest jakiś spacjalny, czy co?

1 użytkowników online, w tym zalogowanych: 0, gości: 1