Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.95
NWR
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 11
#1

Простейшая индикация выполнения в консоли. - C++

09.09.2011, 11:01. Просмотров 2977. Ответов 23
Метки нет (Все метки)

Привет всем форумчанам!

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

Встал вопрос реализации некой анимации - индикатора выполнения. Например крутящийся "/".

Как это лучше реализовать?

Заранее спасибо!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2011, 11:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Простейшая индикация выполнения в консоли. (C++):

Задержать закрытие окна консоли после выполнения программы - C++
Какой командой задержать экран C++ после выполнения программы, а то он сразу исчезает.

Как сделать чтобы программа не вылетала после однократного выполнения в консоли - C++
Доброго времени суток! Подскажите пожалуйста,можно ли сделать так чтобы после проведения одного действия программа не вылетала,как...

Клавиши F1-F12 в консоли, и работа с мышкой в консоли - C++
Я искал на сайте, но не нашел упоминания о том как обрабатывать и или узнавать где находится курсор мышки (и еще мне надо бы узнать нажатие...

считывание с консоли ( не с клавы, а именно с консоли) - C++
нужно написать функцию которая возвращает string в котором написано 500 символов которые были выведены в консоли от начала. среда :...

C++ простейшая программа - C++
Пару дней, как начал учить с++ и вот как бы первая проблема: #include "std_lib_facilities.h" int main() { ...

Простейшая задача - C++
Прошу помощи сижу на экзамене последний вопрос Какое значение будет присвоено переменной s в результате работы следующего фрагмента...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,602
09.09.2011, 17:55 #16
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <unistd.h>
 
int main(void){
    const char buf[] = "-\\|/";
    int percents;
    
    for ( percents = 0; percents < 100; ++percents ){
        printf("%c %02d%%", buf[percents % 4], percents);
        fflush(stdout);
        usleep(500000);
        printf("\b\b\b\b\b");
    }
    printf("Done.\n");
    
    return 0;
}
Ну, соответственно, вместо unistd.h - windows.h, вместо usleep() - Sleep()...


Цитата Сообщение от NWR Посмотреть сообщение
C++
1
for(;!DataLog.eof();)
А файл читается правильно?
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
10.09.2011, 03:13 #17
Цитата Сообщение от NWR Посмотреть сообщение
Вот чему здесь уходить в exception?..
А точно его вызывает close?

Цитата Сообщение от NWR Посмотреть сообщение
C++
1
2
3
4
if(!DataLog)
 {
    goto loop_reading;
 }
Жесть... файл не может открыться по какой-либо причине, допустим отсутствие такового на диске, в результате с такой конструкцией получим вечный цикл, но зато с анимацией бурной деятельности
NWR
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 11
10.09.2011, 08:55  [ТС] #18
Цитата Сообщение от easybudda Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <unistd.h>
 
int main(void){
    const char buf[] = "-\\|/";
    int percents;
    
    for ( percents = 0; percents < 100; ++percents ){
        printf("%c %02d%%", buf[percents % 4], percents);
        fflush(stdout);
        usleep(500000);
        printf("\b\b\b\b\b");
    }
    printf("Done.\n");
    
    return 0;
}
Ну, соответственно, вместо unistd.h - windows.h, вместо usleep() - Sleep()...



А файл читается правильно?
Индикация выполнения отрабатывает. С этим проблем нет. И файл читается на удивление правильно.

А точно его вызывает close?
Catchить пока не пробовал. Просто если закоментраить закрытие то нет и исключения.

Жесть... файл не может открыться по какой-либо причине, допустим отсутствие такового на диске, в результате с такой конструкцией получим вечный цикл, но зато с анимацией бурной деятельности
))) Не не не. Файл все равно так или иначе там появится)
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
10.09.2011, 09:05 #19
Цитата Сообщение от NWR Посмотреть сообщение
Не не не. Файл все равно так или иначе там появится)
отсутствие файла на диске это одна из многих причин. В любом случае эта часть кода бессмысленна.
NWR
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 11
10.09.2011, 09:39  [ТС] #20
отсутствие файла на диске это одна из многих причин. В любом случае эта часть кода бессмысленна.
Просто в нормальных условиях файл появится в папке раньше чем откроется поток. Если вдруг не успел, то нужно дождаться....


Мля. Оказалось что после чтения, исключение способны вызвать еще и clear и seekg(0,ios::beg). Что за грабли такие...Пошел делать catch...
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
10.09.2011, 12:55 #21
NWR, а если у вас нет прав на создание файла в этой директории? Тоже появится?

В STL много чего выбрасывает исключение.
NWR
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 11
10.09.2011, 13:07  [ТС] #22
NWR, а если у вас нет прав на создание файла в этой директории? Тоже появится?
Программа заведомо ложится в папку со всеми норм правами. И мне кажется это мазохизм - писать и отлаживать прогу в оси с птичьими правами.

Всем спасибо товарищи! Разобрался. Дело было совсем не в close(). я не совсем понял в чем, но похоже взбесился какой то указатель повыше. переписал этот участок кода, выкинул лишнее. все заработало! аллилуя!))
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
10.09.2011, 13:09 #23
Цитата Сообщение от NWR Посмотреть сообщение
это мазохизм - пистаь и отлаживтаь прогу в оси с птичьими праввами.
Мазохизмом потом будет использование вашей программы. Особенно сисадмину.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
10.09.2011, 13:09 #24
Цитата Сообщение от NWR Посмотреть сообщение
взбесился какой то указатель повыше
Посмотри по поводу выхода за границы.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2011, 13:09
Привет! Вот еще темы с ответами:

Простейшая структура - C++
Описать структуру с именем STUDENT содержащую следующие поля: фамилия и инициалы, номер группы, успеваемость (массив из 5 элементов)....

простейшая работа со строками - C++
Дана строка вида: XOY, где X и Y – натуральные числа в десятичной системе счисления, значения которых не превышают 100, а O – один из...

Простейшая структура, список - C++
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;locale&gt; #include &lt;string.h&gt; using namespace std; struct node { char s ; ...

Простейшая шифровка текста. - C++
Программа должна шифровать и расшифровывать введенный пользователем текст. Вот что я имею: #include &lt;stdio.h&gt; int main () {char...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
10.09.2011, 13:09
Ответ Создать тему
Опции темы

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