Witam serdecznie,
mam dość nietypowy problem związany z wyliczaniem przewidywanego czasu kopiowanych danych. Chodzi mi tu mianowicie o coś takiego jak w systemie Windows, że podczas kopiowania pliku pojawia się okienko postępu wraz z przewidywanym czasem skopiowania tego pliku.
Mam z tym trochę problemów i w zasadzie do dzisiaj nie udało mi się napisać funkcji obliczającej w czasie rzeczywistym czas potrzebny do skopiowania pliku. Z teoretycznego punku widzenia sprawa wygląda niby prosto...
przykładowo:
- mam do skopiowania plik o rozmiarze np. 10 000 bajtów roz = 10000
- procedura podczepiona pod Timer mierzy co 1s ilość skopiowanych danych: tu dla przykładu w ciągu 1s zostało przekopiowanych 1 000 bajtów Bt = 1000
- stąd z prostego wzoru: t = roz / Bt wynika, że 10 000 bajtów zostanie przekopiowanych w ciągu 10s ( t = 10000 / 1000).
W praktyce sprawa u mnie wygląda zupełnie inaczej. Procedura źle mierzy czas co w konsekwencji daje fałszywy wynik. Do kopiowania używam funkcji BlockRead i BlockWrite co dodatkowo komplikuje mi sprawę, gdyż w tym przypadku dane nie są kopiowane bajt po bajcie ale poprzez bufor o określonej z góry wielkości.
Tak więc zwracam się z prośbą do osób, które wiedzą jak napisać taką procedurę bądź funkcję, o podanie kilku wskazówek pomocnych w rozwiązaniu mojego problemu. Być możliwe, że wielu z Was już kiedyś coś podobnego napisały. Wszelkie wskazówki i algorytmy będą mile widziane.
Z góry dziękuję.
Pozdrawiam i czekam na odpowiedź.
Do usłyszenia