Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/12: Рейтинг темы: голосов - 12, средняя оценка - 4.67
jwplaster
9 / 9 / 4
Регистрация: 01.05.2013
Сообщений: 281
#1

Как создать проценты загрузки?

22.02.2014, 19:43. Просмотров 2323. Ответов 16
Метки нет (Все метки)

Опять вопрос касающийся загрузки... как сделать так, чтоб во время загрузки выводилось вот так:
C#
1
Console.WriteLine("Загружено: " + проценты);
Или, если не трудно, лучше вот так:
C#
1
Console.WriteLine("| ");
Потом, когда загрузится 5% вот так:
C#
1
Console.WriteLine("||");
И т.д.

Сам нашел создание процентов, но не понял как сделать так, чтоб программа выдавала именно процесс загрузки, а не просто выдавала значения 5% , 6% и т.д.

Добавлено через 1 час 39 минут
Ну , раз никто не знает-то как вообще сделать процесс-бар самой загрузки?

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2014, 19:43
Ответы с готовыми решениями:

Как создать событие полной загрузки страницы
Здравствуйте. Подскажите пожалуйста как сделать такую вещь. Есть метод...

как заставить калькулятор понимать проценты?
Здравствуйте,мне нужна помощь с калькулятором (курсовая). В необходимые условия...

Windows CE 6.0: Создать форму отображающую процесс загрузки приложения
С наступающим всех!!! Подскажите такой момент, необходимо создать форму...

Нужно создать класс или метод в который будет служить для загрузки и инициализации переменных
Нужно создать класс или метод который будет служить для загрузки и...

проценты
Здравствуйте, у меня возник вопрос - как вычитать из числа процент? :help:...

16
Памирыч
Почетный модератор
20842 / 8724 / 1080
Регистрация: 11.04.2010
Сообщений: 11,012
22.02.2014, 22:15 #2
Цитата Сообщение от jwplaster Посмотреть сообщение
Ну , раз никто не знает-то как вообще сделать процесс-бар самой загрузки?
Кодом не подскажу, не пишу на шарпе, а принцип, думаю, прост:
Пишется, например, строка
C#
1
[          ]
Затем, при изменении прогресса устанавливаем курсор в уже написанную строку в положение
C#
1
2
Console.SetCursorPosition(X, Y);
Console.Write("*");
Второй символ закрываем так:
C#
1
2
Console.SetCursorPosition (X+1, Y);
Console.Write ("*");
и т.д.

Координаты X вычислить в Вашем случае просто, ведь Вы знаете процент выполнения, делите его на 10 (ну еще прибавлять количество символов от левого края, если они есть)
0
jwplaster
9 / 9 / 4
Регистрация: 01.05.2013
Сообщений: 281
24.02.2014, 00:01  [ТС] #3
Up.
0
pokerface
202 / 167 / 48
Регистрация: 20.09.2012
Сообщений: 446
24.02.2014, 00:09 #4
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
using System;
namespace ConsoleFunctions
{
    static class Code
    {
        public static void OverwriteConsoleMessage(string message)
        {
            Console.CursorLeft = 0;
            int maxCharacterWidth = Console.WindowWidth - 1;
            if (message.Length > maxCharacterWidth)
            {
                message = message.Substring(0, maxCharacterWidth - 3) + "...";
            }
            message = message + new string(' ', maxCharacterWidth - message.Length);
            Console.Write(message);
        }
 
        public static void RenderConsoleProgress(int percentage)
        {
           RenderConsoleProgress(percentage, '\u2590', Console.ForegroundColor, "");
        }
 
        public static void RenderConsoleProgress(int percentage, char progressBarCharacter, 
                  ConsoleColor color, string message)
        {
            Console.CursorVisible=false;
            ConsoleColor originalColor = Console.ForegroundColor;
            Console.ForegroundColor = color;
            Console.CursorLeft = 0;
            int width = Console.WindowWidth - 1;
            int newWidth = (int)((width * percentage) / 100d);
            string progBar = new string(progressBarCharacter, newWidth) + 
                  new string(' ', width - newWidth);
            Console.Write(progBar);
            if (string.IsNullOrEmpty(message)) message = "";
            Console.CursorTop++;
            OverwriteConsoleMessage(message);
            Console.CursorTop--;
            Console.ForegroundColor = originalColor;
            Console.CursorVisible = true;
        }
 
 
    }
}
пользоваться так
C#
1
RenderConsoleProgress(30, '\u2591', ConsoleColor.Yellow, "Percentage = 30");
или так
C#
1
RenderConsoleProgress(92, '\u2592', ConsoleColor.Green, "92%");
или так
C#
1
RenderConsoleProgress(30, '\u2591', ConsoleColor.Red, "");
1
Psilon
Master of Orion
Эксперт .NET
5989 / 4842 / 901
Регистрация: 10.07.2011
Сообщений: 14,458
Записей в блоге: 5
Завершенные тесты: 4
24.02.2014, 01:15 #5
-HPR-, как все сложно Я недавно приводил пример, конечно, не такой крутой, но попроще
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    public class Program
    {
        private static void Main()
        {
            var thread = new Thread(() =>
                                    {
                                        for (int i = 0; i <= 100; i++)
                                        {
                                            Console.SetCursorPosition(0, 0);
                                            Console.WriteLine("Выполнено {0}%", i);
                                            Thread.Sleep(100);
                                        }
                                    });
            thread.Start();
            thread.Join();
        }
    }
2
Водяной Змей
Заблокирован
24.02.2014, 02:10 #6
Вам пора переходить на Winforms.
Почитайте здесь.

как сделать так, чтоб программа выдавала именно процесс загрузки
Прогресс загрузки чего?
Вот пример для скачивания файла по прямой ссылке с отображением прогресса.

14____-ProgressBar.zip
0
pokerface
202 / 167 / 48
Регистрация: 20.09.2012
Сообщений: 446
24.02.2014, 02:46 #7
Цитата Сообщение от Psilon Посмотреть сообщение
-HPR-, как все сложно Я недавно приводил пример, конечно, не такой крутой, но попроще
Psilon, у Вас без полосочек
1
Psilon
24.02.2014, 02:47
  #8

Не по теме:

-HPR-, шожеделать... :scare:

0
jwplaster
9 / 9 / 4
Регистрация: 01.05.2013
Сообщений: 281
24.02.2014, 19:31  [ТС] #9
Цитата Сообщение от Водяной Змей Посмотреть сообщение
Вам пора переходить на Winforms.
Это скучно...


А всем остальным:

У меня проблемы с многопоточностью
Получается так, что бар отображается, а вот скачивание не идёт
0
Panay
4 / 4 / 3
Регистрация: 25.05.2010
Сообщений: 31
24.02.2014, 20:49 #10
http://www.bytechaser.com/en/article...tion-in-c.aspx

я тут нашел, с комментариями код приведен, сидите и разбирайтесь
0
Водяной Змей
Заблокирован
24.02.2014, 21:09 #11
Это скучно...
Winforms - это скучно, а консоль - весело?
Ну-ка напишите мне консольный браузер.

Получается так, что бар отображается, а вот скачивание не идёт
Я Вам кинул пример. У меня всё скачивается.
Сядьте и разбирайтесь.
0
pycture
1168 / 557 / 84
Регистрация: 20.09.2012
Сообщений: 1,813
Завершенные тесты: 3
25.02.2014, 07:27 #12
Цитата Сообщение от Водяной Змей Посмотреть сообщение
напишите мне консольный браузер
http://ru.wikipedia.org/wiki/Lynx
1
Wolfdp
762 / 721 / 186
Регистрация: 15.06.2012
Сообщений: 2,821
Записей в блоге: 1
Завершенные тесты: 1
25.02.2014, 09:11 #13
ммм... обычно консоль подразумевает последовательное выполнение введенных команд. То есть, если набрали "загрузить файл по адресу", то сидим и ждем загрузки, зачем лепить потоки не совсем понимаю. И я бы сделал так...

C#
1
2
3
4
5
6
7
8
9
private int prev = 0;
 
// Не знаю что там за событие, поэтому беру с потолка
void Progress(object sender, ProgressArgs e)
{
  if (e.Percent > prev && e.Percent > 0 && e.Percent % 5 == 0)
    Console.Write('|');
    prev = e.Percent;
}
0
pokerface
202 / 167 / 48
Регистрация: 20.09.2012
Сообщений: 446
25.02.2014, 18:29 #14
Цитата Сообщение от Водяной Змей Посмотреть сообщение
Winforms - это скучно, а консоль - весело?
ну просто иногда хочется каких-то нетривиальных задач, а формы всё делают за тебя( Вот например гафический редактор в консоли хД вод это хардкор...) А на форме что? вывел на панель или PB и рисуй сколько влезет...
0
tezaurismosis
Администратор
Эксперт .NET
8423 / 3790 / 723
Регистрация: 17.04.2012
Сообщений: 8,462
Записей в блоге: 14
25.02.2014, 18:45 #15
Цитата Сообщение от -HPR- Посмотреть сообщение
Winforms - это скучно
Скучно пока просто. Попробуйте написать собственный контрол с заумной системой отображения или собственный менеджер размещения - вот это будет "веселье"!
Кстати говоря, почитайте про ncurses.
0
BigVan
20 / 20 / 15
Регистрация: 16.02.2014
Сообщений: 73
25.02.2014, 18:59 #16
Я когда-то делал так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
using System;
 
class Program
{
    static void Main()
    {
        int count_proc = 5; // количество процентов, после которых идет переход
        int steps = 100 / count_proc+1; // Получаем количество шагов
        Console.WriteLine("Типа установка");
        Console.WriteLine("[{0}]", new String(' ', steps)); // Печатаем шаблон
 
        Console.SetCursorPosition(0, Console.CursorTop - 1); // Устанавливаем начальную позицию
        for (int process = 0; process < steps; process++)
        {
            Console.SetCursorPosition(process+1, Console.CursorTop); // устанавливаем позицию
            Console.Write("|");
 
            Console.SetCursorPosition(steps + 3, Console.CursorTop); 
            Console.Write("{0}%", process*count_proc); // рисуем проценты прогресса
 
            Random r = new Random();
            System.Threading.Thread.Sleep(r.Next(40, 600));// Симулируем нагрузку
        }
        Console.WriteLine(); // Переходим на новую строку
       
        Console.ForegroundColor = ConsoleColor.Green;
        Console.WriteLine("Готово!");
        Console.ReadLine();
    }
}
Добавлено через 1 минуту
Если проценты прогресса не нужны, просто удалите вот этот фрагмент (18-19 строки)

C#
1
2
Console.SetCursorPosition(steps + 3, Console.CursorTop); 
Console.Write("{0}%", process*count_proc); // рисуем проценты прогресса
0
pokerface
202 / 167 / 48
Регистрация: 20.09.2012
Сообщений: 446
25.02.2014, 19:21 #17
tezaurismosis, если нужно заумный контролл, то юзают wpf.
Я не говорю что формы скучно, я просто процитировал другого человека.
А сравнивать консоль с формой по крайней мере не рационально в силу выполняемых задач... Конечно, создать юзер френдли интерфейс проще на формах, но от консоли никто и не ждет "дружества". Консоль это в первою очередь функционал и экономия памяти.
А придумать заумные задачи можно как и на консоли, так и на форме...

Добавлено через 2 минуты
Любая нетривиальная задача для каждой среды сложна по своему...
1
25.02.2014, 19:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2014, 19:21

Проценты в банке
День добрый. Я учусь кодить на С# и смотрю видеоуроки и делаю задание на одном...

Несостыковка перевода числа в проценты
Всем привет ! Возникла такая проблема Пытаюсь с игры перевести число в...

Среднее арифметическое Матрицы с вычетом элементов строки и проценты
1 - Необходимо найти среднее арифметическое каждой строки матрицы Q(l,m) и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru