[DELPHI] [INDY 9] Jak pokazac stan pobierania pliku via p2p

0

Piszę ważny [przynajmniej dla mnie] projekt..

Do wysyłania plików uzywam klasy TFileStream i WriteStream z Indy.. Pliki przesyłają się pieknie.. jedynym problemem jest pokazanie statusu pobierania plików na ProgressBar.

Sądze, że musze to zrobić za pomoca Timer'a ponieważ podczas metody ReadStream [Client] jest ona wykonywana i trwa dopoki nie nastapi calkowity zapis..

czyli:

ReadStream(MojStrumienOdbieranegoPliku)

po odczytaniu i zapisaniu calego strumienia wykonywane sa dalsze polecenia

FreeAndNil(MojStrumienOdbieranegoPliku)
etc.

Nie wiem jak to zrobić..
Bardzo proszę o pomoc.. bez tego nie rusze dalej..

0

a nie masz tam zdażenia typu onprogress albo podobnego :>

0

Nie..

Jest OnWork w IdTCPClient.. byc moze tam mi sie uda cos zrobic.. pozostanie kwestia servera bo na serverze tez chcialbym pokazac postep.. a jest tylko OnStatus a watpie zeby to opisywalo cos. .ale zobacze ;p

0

tak, korzysta się z onwork, tylko max musisz ustawić w onworkbegin czy jakoś tak i sprawdzać parametr przekazany do tej procedury czy mówi nam o pracy zapisu czy odczytu bo czasem się to przeplata i bez sprawdzania progressbar by mógł świrować

0

Ok.. wielkie dzieki.. a wiesz moze jak mam pokazac status wysylania na ProgressBarze na Serverze? Tam nie ma OnWork etc.

Na poczatku myslalem ze w OnWork mozna by bylo wysylac wartosc progress bara do servera a ten by to ustawail u siebie na Progressie..
I chyba tak zrobie tylko nie wiem, bo moze jest jakis latwiejszy sposob..

0

no wysyłanie stanu progressbara w trakcie wysyłania to troszkę dziwne, wyślij na początku tylko rozmiar danych, a i nie wiem jak odbierasz dane no ale raczej wiesz ile już odebrałeś ...

0

nie chyba mnie nie zrozumiales ;p

Juz wiem jak wszystko pokazac i zrobic.. w OnWork onWorkBegin itd.
A rozmiar pliku wysylam na poczatku gdy pobieram informacje o pliku..

Chodzilo mi o to by w trakcie wysylania/pobierania pliku.. stan wysylania mozna bylo tez zaimplementowac na Serverze a IdTCPServer nie ma metod OnWork itd. jest tylko OnStatus.. wykombinowalem, ze Klient (na ktorym by byl wyswietlany postep) wysylalby postep ProgressBara i w ten sposob Server tez wiedzialby (byloby to widoczne na Progressie) ile klient odebral danych :)

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