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

Ошибка при добавлении TSeries: Access Violation

04.08.2012, 19:14. Показов 2635. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите разобраться с ошибкой:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::MyEvent(TObject *Sender)
{
    TIniFile *ini=new TIniFile("C:\\test.ini");
    int dim=Edit3->Text.ToInt();
    TChartSeries *LineSeries = new TFastLineSeries((TChart*)Sender);
 
    for (int i = 0; i < dim; i++) {
        float qwe=ini->ReadFloat(tt,i,0) ;
        LineSeries->Add(qwe,i,clRed);
    }
    ((TChart*)Sender)->AddSeries(LineSeries);
    delete ini;
 
 
}
При исполнении возникает ошибка access violation на строчке
C++
1
    ((TChart*)Sender)->AddSeries(LineSeries);
Код должен подгружать из ini-файла определенную серию данных и отображать их на графике. Я задаю в Edit номер серии, нажимаю кнопку и должен появляться график, но возникает ошибка. Все элементы (форма, эдит, кнопка, график) созданы динамически.

Добавлено через 18 минут
Я так понимаю, ошибка в том, что Sender'ом является Tbutton, но вот как она является компонентом TForm, на которой расположен TChart, на который и нужно добавить TSeries а как это сделать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.08.2012, 19:14
Ответы с готовыми решениями:

Ошибка Access Violation при использовании vector внутри класса
Проблема в следующем: имеется пользовательский класс. Три поля в классе - векторы, один из которых двумерный. Первое создание экземпляра...

Ошибка при компилировании исправной программы: Access violation at address 501F084A in module 'vcl120.bpl'
Взываю ко всем умам форума!(( Недавно я здесь создавал тему про ошибку, возникающую при компилировании исправной программы. А ошибка такая:...

При попытке присвоить полям новой структуры значений типа AnsiString появляется ошибка Access Violation
При попытке присвоить полям новой структуры значений типа AnsiString появляется ошибка. Как я понимаю это связано с памятью, но не пойму в...

12
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
04.08.2012, 19:18
Visual Component Library: Вид изнутри, удаление и установка компонентов
0
2 / 2 / 0
Регистрация: 22.07.2012
Сообщений: 52
04.08.2012, 19:49  [ТС]
Не могу понять как мне применить эти знания
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
04.08.2012, 19:52
Из вашего кода ничего не понятно что и как...

К примеру что такое MyEvent ?
1
2 / 2 / 0
Регистрация: 22.07.2012
Сообщений: 52
04.08.2012, 20:39  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Из вашего кода ничего не понятно что и как...

К примеру что такое MyEvent ?
Это созданный обработчик события.

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
46
47
48
49
50
51
52
void __fastcall TForm1::Button7Click(TObject *Sender)
{
    TForm *Form2= new TForm(Form1);
    Form2->Width=600;
    Form2->Height=600;
    TChart *Chart5=new TChart(Form2);
    Chart5->Width=600;
    Chart5->Parent=Form2;
    Chart5->View3D=false;
    Chart5->SeriesList->Clear();
    Chart5->Height=300;
    TButton *Button1=new TButton(Form2);
    Button1->Parent=Form2;
    Button1->Left=50;
    Button1->Top=350;
    Button1->Caption="Принять";
    Button1->OnClick=MyEvent;
    TEdit *MyEdit=new TEdit(Form2);
    MyEdit->Parent=Form2;
    MyEdit->Left=50;
    MyEdit->Top=390;
    MyEdit->OnChange=MyEvent1;
    Form2->ShowModal();
}
void __fastcall TForm1::MyEvent1(TObject *Sender)
{
    tt=((TEdit*)Sender)->Text.ToInt();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MyEvent(TObject *Sender)
{
    TIniFile *ini=new TIniFile("C:\\test.ini");
    int dim=Edit3->Text.ToInt();
    TChartSeries *LineSeries = new TFastLineSeries((TChart*)Sender);
    String classname=Sender->ClassName();
    for (int i = 0; i < dim; i++) {
        float qwe=ini->ReadFloat(tt,i,0) ;
        LineSeries->Add(qwe,i,clRed);
    }
    ((TChart*)Sender)->AddSeries(LineSeries);
 
    for (int i = 0; i < dim; i++)
    {
        for (int j=0; j < ubound; j++)
        {
        //ini->WriteFloat(j,i,w[j][i]);
        }
    }
    delete ini;
 
 
}
Вот полный код. При нажатии динамически созданной кнопки происходит событие MyEvent.
Есть форма, на ней собраны разные элементы, в т.ч. кнопка 7, которая создает форму 2 и ее содержимое (чарт, эдит и кнопку). Задача: изменить эдит, нажать кнопку, получить новый график.

Добавлено через 27 минут
Кажется, я решил проблему. Рецепт скину попозже, когда удостоверюсь.
Avazart, спасибо, что откликнулись.

Добавлено через 9 минут
Следующий код прекрасно работает:

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
46
47
48
TChartSeries *LineSeries;
void __fastcall TForm1::Button7Click(TObject *Sender)
{
    TForm *Form2= new TForm(Form1);
    Form2->Width=600;
    Form2->Height=600;
    TChart *Chart5=new TChart(Form2);
    Chart5->Width=600;
    Chart5->Parent=Form2;
    Chart5->View3D=false;
    Chart5->SeriesList->Clear();
    Chart5->Height=300;
    LineSeries = new TFastLineSeries(Chart5);
    Chart5->AddSeries(LineSeries);
    TButton *Button1=new TButton(Form2);
    Button1->Parent=Form2;
    Button1->Left=50;
    Button1->Top=350;
    Button1->Caption="Принять";
    Button1->OnClick=MyEvent;
    TEdit *MyEdit=new TEdit(Form2);
    MyEdit->Parent=Form2;
    MyEdit->Left=50;
    MyEdit->Top=390;
    MyEdit->OnChange=MyEvent1;
    Form2->ShowModal();
}
void __fastcall TForm1::MyEvent1(TObject *Sender)
{
    tt=((TEdit*)Sender)->Text.ToInt();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MyEvent(TObject *Sender)
{
    TIniFile *ini=new TIniFile("C:\\test.ini");
    int dim=Edit3->Text.ToInt();
    String classname=Sender->ClassName();
    for (int i = 0; i < dim; i++) {
        float qwe=ini->ReadFloat(tt,i,0) ;
        LineSeries->Add(qwe,i,clRed);
    }
 
 
 
    delete ini;
 
 
}
Просто потребовалось объявить TSeries как глобальную переменную. Надеюсь, кому-нибудь пригодится.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
04.08.2012, 20:44
А зачем создавать все динамически?
0
2 / 2 / 0
Регистрация: 22.07.2012
Сообщений: 52
04.08.2012, 20:48  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
А зачем создавать все динамически?
Нет какой-то производственной необходимости, просто мне так удобнее
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
04.08.2012, 20:50
И в чем же удобство?
Куча движений куча кода...
0
2 / 2 / 0
Регистрация: 22.07.2012
Сообщений: 52
04.08.2012, 21:21  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
И в чем же удобство?
Куча движений куча кода...
Например, если нужно перенести куда-нибудь код, я могу просто скопировать текст кода, а не файлы студии. Или если просто понадобится какая-то часть из того, что я уже создал мне не придется рисовать новую форму, я просто скопирую код.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
04.08.2012, 21:25
Ну форму,компонент можно тоже скопировать...
И файлы куда проще и надежнее копировать...
0
2 / 2 / 0
Регистрация: 22.07.2012
Сообщений: 52
04.08.2012, 21:48  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Ну форму,компонент можно тоже скопировать...
И файлы куда проще и надежнее копировать...
Может быть. Я ведь недопрограммист, учиться только начал, пока мне так удобнее. Образование экономическое
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
04.08.2012, 21:54
Если бы нужна была динамичность я бы сделал так:

1. Создал бы Form2 и кинул бы на нее все компоненты, настроил их (можно визуально можно кодом в конструкторе формы)
2. Убрал бы Form2 с автосоздания в настройках проекта.
3. В Form1, в кнопке создавал бы форму Form2 динамически ( Обьект TForm2 ).
0
2 / 2 / 0
Регистрация: 22.07.2012
Сообщений: 52
04.08.2012, 21:58  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Если бы нужна была динамичность я бы сделал так:

1. Создал бы Form2 и кинул бы на нее все компоненты, настроил их (можно визуально можно кодом в конструкторе формы)
2. Убрал бы Form2 с автосоздания в настройках проекта.
3. В Form1, в кнопке создавал бы форму Form2 динамически ( Обьект TForm2 ).
Как вариант возможно, буду держать в уме.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.08.2012, 21:58
Помогаю со студенческими работами здесь

Ошибка Access violation при передаче указателя в функцию
выделяю память для нужд програмных и соханяю его. char *resadres =(char*) VirtualAlloc (0, 50000, MEM_COMMIT | MEM_RESERVE,...

Ошибка при создании массива "Access violation. Link terminated"
создается массивы float X, Y, Z, E,F,Fan; все отлично но при попытке увеличить размер до 2000000 линкер выдает ошибку ...

Ошибка при компиляции: "Access violation"
когда открываю проект, и хочу его прокомпилировать, выскакивает ошибка? как мне ее убрать и как востановить проект чтоб можна было дальше...

Ошибка при компиляции: "Access violation at adress 32F7E924 in module 'CC32150MT.DLL'"
При попытке считывания с файла вылетает ошибка. Access violation at adress 32F7E924 in module 'CC32150MT.DLL'. Read of adress F99B77E8....

Ошибка Access violation
Здравствуйте. Не получается в таймере прорисовывать клетки. При старте таймера - выскакивает ежесекундно эта ошибка(скриншот прилагается). ...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru