Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вылет программы из-за значения Value ProgressBar'a

88K
27 октября 2013 года
MartinSeptim
3 / / 27.10.2013
Здравствуйте! Помогите разобраться почему программа вылетает из-за поля value, которое не должно быть больше поля maximum.

Код:
long int size = 0;
                long int sfPB1 = 0;
                size = (long int) inFile.tellg();
                sfPB1 = size;
                memblock = new char [size];
                memblock1 = new char [size];
                inFile.seekg (0, ios::beg);
                inFile.read (memblock, size);
                memcpy(memblock1,memblock,size);
                progressBar1->Maximum=sfPB1+1;
                progressBar1->Step = 1;
                progressBar1->Value = 0;
               
                //вот здесь вылетает. ошибка - value не может быть больше максимума

                for (int i=0; i<size; i++)
                {
                    if ((memcmp ( memblock1, sB, 6 ))==0)
                    {
                     outFile.write (memblock1, 16320);
                     this->progressBar1->Value+=16320;
                    memmove(memblock1, memblock1 + 16320, size - 16320);
                    }
                    else
                    { memmove(memblock1, memblock1 + 1, size -1);
                    this->progressBar1->Value++;
                    }
                }
327
28 октября 2013 года
UserNet2008
748 / / 03.04.2010
Цитата:
//вот здесь вылетает. ошибка - value не может быть больше максимума


Ну Вы мня извините, где error(number error) в Декларации переменных or цикле ???
Дальше более , что такое 16320?
Не надо точит прогу под один файл for progressBar.
P/S
По ходу error тут

 
Код:
size = (long int) inFile.tellg();
вроде так - размер файла
 
Код:
using System;
using System.IO;
System.IO.FileInfo file = new System.IO.FileInfo("C:До_Пол_копейки.куй");
int size = file.Length;
код из головы or вот на скорую руку
88K
28 октября 2013 года
MartinSeptim
3 / / 27.10.2013
16320 размер нужного мне кадра который я записываю в другой файл. Нахождение размера файла написано правильно, я проверил. Ошибка только в progressbar
332
28 октября 2013 года
Valiant
416 / / 27.09.2004
а Вы не пробовали вывести значение size вот в этом месте:
 
Код:
long int sfPB1 = 0;
size = (long int) inFile.tellg();
sfPB1 = size;
я почти уверен что у Вас там ноль!
 
Код:
inFile.seekg (0, inFile.end);
    int size = inFile.tellg();
    inFile.seekg (0, inFile.beg);
я бы с этого начал бы.
88K
28 октября 2013 года
MartinSeptim
3 / / 27.10.2013
Цитата: Valiant
а Вы не пробовали вывести значение size вот в этом месте:
 
Код:
long int sfPB1 = 0;
size = (long int) inFile.tellg();
sfPB1 = size;
я почти уверен что у Вас там ноль!
 
Код:
inFile.seekg (0, inFile.end);
    int size = inFile.tellg();
    inFile.seekg (0, inFile.beg);
я бы с этого начал бы.



Нет, увы, я написал все верно. Я использовал стандартные вещи описанные по ссылкам: 1 и 2 . Ошибка была в

 
Код:
this->progressBar1->Value+=16320;
Если эту строчку убрать то все нормально и никаких вылетов нет.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог