Po spędzonych godzinach w google, szukałem i myślałem, jak tu zrobić progress bar w konsoli. Chciałem zrobić prosty test na kopiowaniu pliku(Copyfile) w C++ i żeby pokazywało mi ile zostało. Dochodziłem do prymitywnego sposobu, ale myślę, że to nie to. Ale po długich przeszukiwaniach, znalazłem setki source code i dochodziłem właśnie do swojego myślenia. Mój pomysł:
Ilość bajtów pliku źródłowego
Ilość bajtów pliku docelowego
Obliczenie różnicy i pokazywanie tego procentowo( []0% [++++]25% [++++++++++]100% )
Ale według mnie to troche mija sie z celem i mam pytanie, czy w ogóle inny sposób istnieje? A po drugie chyba nie da rady w taki sposób. Może jakbym pocioł plik.
Na co, na obliczenie postępu? Jeśli masz dwie wielkości cur – bieżącą wartość oraz max – maksymalną wartość i cur zmienia się w zakresie 0…max to wartość procentowa to po prostu (cur / max)*100
Czemu nie da rady? Oraz co chcesz zrobić z plikiem?!
Jeżeli chodzi o dzielenie pliku, to myślałem, żeby zrobić to ręcznie. Z mojej nikłej wiedzy C++ wynika, że mozna zrobić to tak:
-dziele plik na 4 części
-copyfile…(1czesc)
-Cout - skopiowano 25%
-copyfile…(2czesc)
-cout - skopiowano 50%
-itd.
Bo niestety nie mam wogóle pojęcia jak działa progress bar(C++ to mój pierwszy poważny język) i jak jednocześnie(bez dzielenia pliku) kopiować i pokazywać postęp na ekranie w czasie rzeczywistym. A jeżeli chodzi o biblioteke boost, to można ją ominąć, i napisać kod w standardowych bibliotekach? Czy jestem skazany na boost’a?
Nie jesteś skazany, ale jeśli twoja wiedza na temat programowania jest delikatnie mówiąc marna, to czemu nie użyć gotowego kodu? Zresztą jedną z zasad programowania jest DRY.Co do kopiowania pliku to chyba naturalne jest, że pobierasz wielkość całego pliku, oraz podczas kopiowania zliczasz ile już zostało skopiowane. Jakiekolwiek “fizyczne” dzielenie pliku nie ma żadnego sensu.
Chyba nic z tego nie wyjdzie. Mam za małą wiedzę na ten temat. Niby poduczyłem się “Od zera do gier kodera” i “Symfonia c++”, ale jednak brak mi praktyki. Męczyłem się z tym dwa tygodnie. Dziwie sie bo gdy szukałem pod hasłem “progress bar” to wyskakiwało mi tylko kod na rysowanie. To, to i ja potrafię, ale nie potrafię tego połączyć z kopiowaniem. Postaram się jeszcze raz napisać kod, z tym buffer. Thx za odpowiedzi.