![]() |
|
Модераторы: bsa |
![]()
|
|
| Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: нет Всего: 0 |
Здравствуйте.
Делаю консольную программу(клиент сервер), которая пересылает файл. Хочу сделать прогресс бар как-нибудь в консоле, но что-бы не сильно грузил процессор. Думаю сделать, чтобы что-бы он обновлялся только в тех случаях когда он будет менять свой облик. Зависимость у него хочу сделать - число пересланных бит от общего размера файла. Хотел-бы узнать как тут грамотней сделать? Какие функции можно применить? Я в работе с консолями мало что знаю. Кроме как на подобии printf, cout, ... |
|||
|
||||
| UniBomb |
|
|||
|
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 1 Всего: 97 |
Ak47black, выбираешь какой-нибудь символ, определяешь длину шкалы и с соответствующим дискретным шагом выводиш в строку выбранный символ.
Например ты выбрал символ ▓ и 10 символов весь прогрессбар. каждый раз, когда ты получил 10% данных ты выводишь обычным printf (или через cout если ты на С++ пишешь) этот символ. Обычно в досе под это дело используют вот эти символы:
А там уже извращайся наводи эстетику как тебе вздумается. Второй вариант - выводить в одной и той же знаковой позиции по очереди символы "/", "-", "|", "\" а после них число процентов от принятого файла. Получается эффект вращающейся палочки, символизирующей что процесс идёт и программа не зависла. Это сообщение отредактировал(а) UniBomb - 4.3.2010, 21:22 |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 10 Всего: 33 |
![]() такой? вот.
Это сообщение отредактировал(а) andrew_121 - 4.3.2010, 22:11 -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Веталька |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 338 Регистрация: 2.11.2008 Репутация: нет Всего: 6 |
заинтересовала тема, подскажите как это реализовать, все таки для консольки нужная вещь -------------------- Ради зачета студент идет на все, даже на лекции........................ |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 10 Всего: 33 |
что именно? все просто, как пять копеек. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: нет Всего: 0 |
andrew_121, спасибо что поделились кодом.
Но вот с моим проектом тут трудно применить, понимаете тут я это сразу несказал, мне нужно будет такую-же саму програму написать на java. Мне вот интересно как можно сделать так, чтобы например строка отражающая число была в одном месте консоли и при выполнении программы меняла значение? |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Ak47black, нужно пользоваться специальными кодами. Например, "\b" - возврат курсора на одну позицию назад. std::cout << std::flush - сброс буферов (отображение на консоль без необходимости отправки '\n').
|
|||
|
||||
| andrew_121 |
|
||||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 10 Всего: 33 |
Добавлено через 1 минуту и 5 секунд и в чем проблема? легко переписывается. -------------------- Удалил аккаунт. Прощайте! |
||||
|
|||||
| jhonyxakep |
|
|||
![]() Divide Et Impera ![]() ![]() Профиль Группа: Участник Сообщений: 983 Регистрация: 7.4.2009 Где: Что, Когда? Репутация: 1 Всего: 8 |
||||
|
||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 2 Всего: 10 |
jhonyxakep, можно но не нужно. так как deprecated и obsolete. Нужно пользоваться средствами API тогда уже.
SetConsoleCursorPosition, etc. |
|||
|
||||
| jhonyxakep |
|
|||
![]() Divide Et Impera ![]() ![]() Профиль Группа: Участник Сообщений: 983 Регистрация: 7.4.2009 Где: Что, Когда? Репутация: 1 Всего: 8 |
||||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
jhonyxakep, conio.h это совсем вещь не кроссплатформенная и тем более не стандартная.
|
|||
|
||||
| jhonyxakep |
|
|||
![]() Divide Et Impera ![]() ![]() Профиль Группа: Участник Сообщений: 983 Регистрация: 7.4.2009 Где: Что, Когда? Репутация: 1 Всего: 8 |
||||
|
||||
| Веталька |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 338 Регистрация: 2.11.2008 Репутация: нет Всего: 6 |
как выводить символ в одно и то же место? читая тему увидел /b но вот вопрос а если у меня уже напечатано 10 строк? -------------------- Ради зачета студент идет на все, даже на лекции........................ |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Веталька, а причем тут прогрессбар? В твоем случае придется использовать нестандартные механизмы.
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |