Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 03.07.2012
Сообщений: 56

График в TChart выводится только с данными первого файла

16.05.2013, 11:54. Показов 1002. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравстуйте!
В общем, есть 2 основные кнопки на форме: одна - для открытия и считывания выбранного файла, а вторая - для вывода графика.
Так вот, запускаю программу, нажимаю на 1-ю кнопку, выбираю нужный файл с данными, все правильно считывается. При нажатии на эту кнопку выходит окошко для выбора файла из компьютера, считываются и записываются в отдельный массив только нужные данные, не все, и, так как заранее неизвестно, сколько там строк, высчитывается их количество. Затем нажимаю на вторую кнопку, на второй кнопке снова высчитывается количество строк, а затем уже идет работа с тем массивом данных, который мы создали на первом этапе.
Еще там задаются дополнительные параметры, такие, как диапазон, например.
Проблема в том, что, если я закончила работу с данным файлом (который выбрала первым), и мне нужно выбрать другой файл, я снова нажимаю на 1-ю кнопку, файл считывается (об этом мне сообщает ShowMessage), но, когда нажимаю на 2-ю кнопку, то никакого графика не выводится, хотя с файлом все в порядке, и, если бы, я его выбрала первым, при запуске программы, то график спокойно бы вывелся и не раз (если меняю диапазоны и, соответственно, еще раз нажимаю на вторую кнопку).
В общем, проблема в том, что выводятся графики только по данным файла, который открываешь первым при запуске программы.
Так много написала, но, вроде, все подробно. Надеюсь, кто-нибудь поможет мне справиться с этой проблемой
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.05.2013, 11:54
Ответы с готовыми решениями:

Прочитать файл1 и создать новый файл2 с данными из первого файла, только без цифр
Добрый день. Есть задача: прочитать файл1 и создать новый файл2 с данными из первого файла, только...

Из файла выводится только первая строка
program p1; var f:text; s1,s2,s3:string; begin Assign(f, 'C:\Desktop\Ìèëëèîíåð\file.txt');...

Чтение строк из файла: выводится только одна строка
Подскажите где ошибка? Имеется код: Dim inmes() As String =...

5
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
16.05.2013, 12:31
ну я так полагаю при повторе надо заново инициализировать чарт, серию либо какие-то свои параметры. желательно видеть код.
0
0 / 0 / 0
Регистрация: 03.07.2012
Сообщений: 56
16.05.2013, 12:41  [ТС]
AntonChik, серии у меня инициализируются на второй кнопке, и, так как, после нажатия на 1-ю кнопку, считывается новый файл и, соответственно, создается новый массив, то и со 2-й кнопкой, вроде как, проблем не должно было быть. И в начале кода на 2-й кнопке у меня очищается чарт (Series1->Clear...).
Вообще, у меня не было такой проблемы до того, как пришлось подсчитывать количество строк. И я думаю, может, проблема возникает именно в связи с этим... Может нельзя, либо нужно как-то по другому делать подсчет количества строк на второй кнопке, но этот подсчет мне нужен для дальнейших операций с данными...
0
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
16.05.2013, 12:57
Цитата Сообщение от grain Посмотреть сообщение
Может нельзя, либо нужно как-то по другому делать подсчет количества строк на второй кнопке, но этот подсчет мне нужен для дальнейших операций с данными...
приятно конечно что вы делитесь с нами своими мыслями, но на форуме сегодня остались только ребята, привыкшие опираться на код(пусть даже он будет индусским), экстрасенсы к сожалению разъехались с гастролями по России, увы.

а зачем кстати второй раз считать количество строк?
0
0 / 0 / 0
Регистрация: 03.07.2012
Сообщений: 56
16.05.2013, 13:06  [ТС]
Код на первой кнопке:
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
if (OpenDialog1->Execute()==true)
        FlName = OpenDialog1->FileName;
 
        //подсчет количества непустых строк
        TStringList *list = new TStringList;
        list->LoadFromFile(FlName.c_str());
        cnt=0;
        for (i=0; i<list->Count; i++)
        {
                if (!list->Strings[i].IsEmpty())
                        cnt+=1;
        }
        //ShowMessage(((cnt-2)-((cnt-2)/4))-(2*(((cnt-2)-((cnt-2)/4))/3)));
 
        //считывание значений с файла
        freopen (FlName.c_str(), "r", stdin);
        for (i=0; i<2; i++)
        cin>>st;
        //ненужный текст считываем в массив, который не используем в будущем, нужный массив - f[i].a[j]
        for (i=0; i<((cnt-2)-((cnt-2)/4)); i++)
        {
                for (j=0; j<4; j++)
                {
                        cin>>b1[j];
                }
                for (j=0; j<300; j++)
            {
                cin>>a[j];
                f[i].a[j]=a[j];
                        //Memo1->Lines->Add(StrToInt(f[i].a[j]));
        }
    }
        ShowMessage("Файл прочитан");
Начало кода на 2-й кнопке:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Series1->Clear();
        Series2->Clear();
        //Memo1->Clear();
 
        //подсчет количества непустых строк
        TStringList *list = new TStringList;
        list->LoadFromFile(FlName.c_str());
        cnt=0;
        for (i=0; i<list->Count; i++)
        {
                if (!list->Strings[i].IsEmpty())
                        cnt+=1;
        }
 
        //диапазон
        t1=Edit2->Text.ToInt();
        t2=Edit3->Text.ToInt();
 
        //количство строк, в которых находятся все числовые данные без всяких примечаний
        CNT=((cnt-2)-((cnt-2)/4))-(2*(((cnt-2)-((cnt-2)/4))/3));
И, собственно, вывод графика (на 2-й кнопке):
C++
1
2
3
4
5
6
7
8
9
10
11
12
 k=-100;
        for (j=0; j<300; j++)
        if (z_db[j]>=-10)
        {
                Series1->Add(z_db[j], RoundTo((0.2*k), -2), clBlue);
        }
        else
                Series1->Add(-10, RoundTo((0.2*k), -2), clBlue);
 
        Series2->Add(1, RoundTo((0.2*k), -2), clRed);
                k++;
        }
Добавлено через 3 минуты
AntonChik, да я уже поняла, что лучше показать код)
Во второй раз подсчет идет для дальнейших операций, например, чтобы высчитать срднее
0
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
16.05.2013, 13:29
а при втором подсчете результат какой-то другой получается? чем не устраивает значение cnt после первого просчета? если cnt глобальная конечно.
проверяете ли cnt после второго подсчета?

почему бы не считывать значения из list, раз уже загрузили туда файл для подсчета строк? (хотя наверно с непривычки)
но почему используете именно freopen?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.05.2013, 13:29
Помогаю со студенческими работами здесь

Записать в третий файл только те пары чисел, в которых число из первого файла меньше соответствующего числа из второго файла.
Дано два файла, содержащих одинаковое количество целых чисел. Записать из них в третий файл только...

Чтение всего файла, а не только до первого переноса
Недавно научился делать простые сайты, и уже принялся учить других как это делать. Решил...

Двумерный график - ошибок нет, но график не выводится
Не получается вывести графики,но I(u) должен идти через 0 и постепенно по экспоненте расти до 1....

График в TChart
как сделать в TChart (конечно использую два: 1-строит точки, 2-функцию через эти точки), чтобы...

График TChart
Построить график функции exp(x)-exp(-x)-2. procedure TForm1.BitBtn1Click(Sender: TObject); var...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru