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

Project raised exception class eaccessviolation with message 'access violation at address Ошибка Builder 6

10.06.2019, 22:42. Показов 1940. Ответов 7

Студворк — интернет-сервис помощи студентам
Здравствуйте, суть программы - некая информационно-поисковая система "Ветеринарная лечебница". При добавлении нового клиента вылезает ошибка project "Project1.exe" raised exception class EAccessViolation with message 'Access violation at address '004023C3' in modulee "Project1.exe"
Из за чего это может быть??? Когда нажимаешь ОК выводит место в библиотеке .cpp на SaveData, а именно на строчку с id.

Сам код в билдере
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#include<fstream>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#include "VeterinarnayaLechebnica.h"
TForm1 *Form1;
Lechebnica _vl;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
        ComboBox1->ItemIndex = 0;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button2Click(TObject *Sender)   //Добавить
{
     _vl.AddNewElement
(
StrToInt(Edit1->Text),
Edit2->Text.c_str(),
Edit3->Text.c_str(),
Edit4->Text.c_str(),
ComboBox1->Text.c_str()
);
     ListBox1->Items->Clear();
     for(int i=0;i<_vl.getCount();i++)
     ListBox1->Items->Add(_vl.GetShortInfo(i).c_str());
     ShowMessage("Добавлен новый клиент!");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)  //Удалить
{
  int i = ListBox1->ItemIndex;
  if(i>=0)
{
        _vl.Remove(i);
        ListBox1->Items->Clear();
        Edit1->Clear();
        Edit2->Clear();
        Edit3->Clear();
        Edit4->Clear();
        ComboBox1->ItemIndex = 0;
        ListBox1->ItemIndex = i;
        ShowMessage("Клиент удален из базы");
}
  else ShowMessage("Выберите клиента");
  }
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender) //Выход
{
        Application->Terminate();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ListBox1Click(TObject *Sender)  // Клик по листбоксу
{
        int i = ListBox1->ItemIndex;
        if(i>=0)
{
        Edit1->Text = _vl.getID(i);
        Edit2->Text = _vl.getName(i).c_str();
        Edit3->Text = _vl.getFamilia(i).c_str();
        Edit4->Text = _vl.getNomer(i).c_str();
        ComboBox1->Text = _vl.getYslyga(i).c_str();
}
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::Button1Click(TObject *Sender)       //Поиск
{
        vector<bool> vect;
        int id, nomer;
        string name, familia, yslyga;
                if(CheckBox1->Checked==true&&Edit1->Text!="")
                {vect.push_back(true);checked=true;id = StrToInt(Edit1->Text);}
                else vect.push_back(false);
 
                if(CheckBox2->Checked)
                {vect.push_back(true);checked=true;name = Edit2->Text.c_str();}
                else vect.push_back(false);
 
                if(CheckBox3->Checked)
                {vect.push_back(true);checked=true;familia = Edit3->Text.c_str();}
                else vect.push_back(false);
 
                if(CheckBox4->Checked)
                {vect.push_back(true);checked=true;nomer = Edit4->Text.c_str();}
                else vect.push_back(false);
                
                if(CheckBox5->Checked)
                {vect.push_back(true);checked=true;yslyga = ComboBox1->Text.c_str();}
                else vect.push_back(false);
                 if(_vl.getCount()>0)
                {
                        if(checked)
                        {
                                Button5->Caption="Возврат";
                                vector<int> founded = _vl.Found(id,name,familia,nomer, yslyga,vect);
                                ListBox1->Items->Clear();
                                if(founded.size()!=0)
                                {
                                        ListBox1->Items->Add("Найденные клиенты:");
                                        for(unsigned i=0;i<founded.size();i++)
                                        ListBox1->Items->Add(_vl.GetShortInfo(founded[i]).c_str());
                                }
                                else ListBox1->Items->Add("Ни одного клиента не найдено");
                        }
                        else ShowMessage("Выберите хотя бы 1 параметр");
                }
        else ShowMessage("Нет элементов");
}
 
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::Button7Click(TObject *Sender)    //сохранить в файл
{
     if(_vl.getCount()>0)
     {
      std::offstream out;
      out.open(Edit5->Text.c_str());
      if (out.is_open())
      {
        for(int i=0;i<_vl.getCount();i++)
        {
                out << _vl.getID(i) << std::endl;
                out << _vl.getName(i) << std::endl;
                out << _vl.getFamilia(i) << std::endl;
                out << _vl.getNomer(i) << std::endl;
                out << _vl.getYslyga(i) << std::endl;
                out << "________________";
                if(i!=_vl.getCount()-i) out << std::endl;
 
        }
        ShowMessage("Сохранено");
      }
     }
     else ShowMessage("Нечего сохранять");
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::Button6Click(TObject *Sender)    //загрузить файл
{
 string line;
 std::ifstream in(Edit5->Text.c_str());
 if (in.is_open())
 {
  _vl.Clear();
  ShowMessage(IntToStr(_vl.getCount()));
  int counter = 0;
  int id;
  string name, familia, nomer, yslyga;
  while(getline(in, line))
  {
        Edit5>Text.c_str();
        switch(counter)
        {
         case 0 : {id=StrToInt(line.c_str()); break;}
         case 1 : {name=line.c_str();break;}
         case 2 : {familia=line.c_str();break;}
         case 3 : {nomer=line.c_str();break;}
         case 4 : {yslyga=line.c_str();break;}
        }
        counter++;
        if(counter==0)
        {
         counter=0;
         _vl.AddNewElement(true, _vl.getCount(),id,name,familia,nomer,yslyga);
        }
  }
  ShowMessage("Файл загружен");
 }
 in.close();
}
//---------------------------------------------------------------------------
Код библиотеки .cpp

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include "VeterinarnayaLechebnica.h"
#include <string>
#include <sstream>
 
    Lechebnica::Lechebnica()
    {
    }
 
    int Lechebnica::getID(int i)
    {
        return _ID[i];
    }
    
    string Lechebnica::getName(int i)
    {
        return _Name[i];
    }
    
    string Lechebnica::getFamilia(int i)
    {
        return _Familia[i];
    }
    
    string Lechebnica::getNomer(int i)
    {
        return _Nomer[i];
    }
    
    string Lechebnica::getYslyga(int i)
    {
        return _Yslyga[i];
    }
    
        void Lechebnica::SaveData(int i, int lastAction)
        {
            _lastAction = lastAction;
            _lastIndex = i;
            _lastID = _ID[i];
            _lastName = _Name[i];
            _lastFamilia = _Familia[i];
            _lastNomer = _Nomer[i];
            _lastYslyga = _Yslyga[i];
        }
    
    
    string Lechebnica::GetShortInfo(int i)
    {
        string s = "";
        ostringstream index;
        index << (i+1);
        string str = index.str();
        s += str;
        
        ostringstram id;
        id << _ID[i];
        str = id.str();
        s += ". ID: " + str;
        s += "; Èìÿ: " + _Name[i];
        s += "; Ôàìèëèÿ: " + _Familia[i];
        s += "; Íîìåð: " + _Nomer[i];
        s += "; Óñëóãà: " + _Yslyga[i];
        
        return s;
    }
    
    
    
    
    
    vector<int> Lechebnica::Found(int id, string name, string familia, string nomer, string yslyga, vector<bool> search By)
    {
        vector<int> founded;
        for(int i=0;i<_ID.size();i++);
        {
            bool correct = true;
            if(searchBy[0] && correct)
                if(id!=_ID[i]) correct = false;
            if(searchBy[1] && correct)
                if(name!=_Name[i]) correct = false;
            if(searchBy[2] && correct)
                if(familia!=_Familia[i]) correct = false;
            if(searchBy[3] && correct)
                if(nomer!=_Nomer[i]) correct = false;
            if(searchBy[4] && correct)
                if(yslyga!=_Yslyga[i]) correct = false;
            if(correct) founded.push_back(i);
        }
        return founded;
    }
    
    
    void Lechebnica::Remove(int index)
    {
        SaveData(index, l);
        _ID.erase(_ID.begin() + index);
        _Name.erase(_Name.begin() + index);
        _Familia.erase(_Familia.begin() + index);
        _Nomer.erase(_Nomer.begin() + index);
        _Yslyga.erase(_Yslyga.begin() + index);
        
    }
    
    Void Lechebnica::AddNewElement(int index, int id, string name, string familia, string nomer, string yslyga)
    {
        SaveData(index, l);
        _ID.insert(_ID.begin() + index,id);
        _Name.insert(_Name.begin() + index,name);
        _Familia.insert(_Familia.begin() + index,familia);
        Nomer.insert(_Nomer.begin() + index,nomer);
        _Yslyga.insert(_Yslyga.begin() + index,yslyga);
        if(readFromFile) SaveData(getCount()-1,3);
        else SaveData(getCount()-1,0);
        
    }
И код библиотеки .h

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
#include <string.h>
#include <iostream>
#include <vector>
 
using namespace std;
 
    class Lechebnica
    {
        private:
            vector<int> _ID;
            vector<string> _Name, _Familia, _Yslyga, _Nomer;
            int _lastAction, _lastIndex, _lastID;
            string _lastName, _lastFamilia, _lastYslyga, _lastNomer;
            void SaveData(int index, int lastAction);
        public:
            Lechebnica();
            int getCount();
            int getID(int);
            string getName(int);
            string getFamilia(int);
            string getNomer(int);
            string getYslyga(int);
            void AddNewElement(int index, int id, string name, string familia, string nomer, string yslyga);
            string GetShortInfo(int i);
            vector<int> Found(int id, string name, string familia, string nomer, string yslyga, vector<bool> searchBy);
            void Remove(int i);
    };
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.06.2019, 22:42
Ответы с готовыми решениями:

Project raised exception class eaccessviolation with message 'access violation at address
Запускаю проект(информационно поисковая система), хорошо запускается, там есть кнопки(добавить клиента, удалить, редактировать и т.д.), и...

Ошибка: C++ Builder 6 Project Project1.exe raised exception class EClassNotFound with message 'Class TImage not found'
Здравствуйте. Ошибка: C++ Builder 6 Project Project1.exe raised exception class EClassNotFound with message 'Class TImage not found'. ...

ошибка Project kontr1_pr.exe raised exception class EAccessViolation ...
в новом окне Debugger Exception Notification Project kontr1_pr.exe raised exception class EAccessViolation with message 'Access violation...

7
 Аватар для Lelik-pahan
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
11.06.2019, 00:04
lavalik, как у тебя может появляться access violation, если твой код некомпилируемый?

VeterinarnayaLechebnica.cpp
строка 54 - ostringstram вместо ostringstream
строка 70 - search By вместо searchBy
строка 73 - точка с запятой после if
строки 94 и 105 - необъявленная переменная l (возможно, вместо единицы)
строка 103 - Void вместо void
строка 109 - Nomer вместо _Nomer
строка 111 - необъявленная переменная readFromFile

функция AddNewElement принимает параметры
(int, int, string, string, string, string)
ты туда передаёшь
(StrToInt(Edit1->Text), Edit2->Text.c_str(), Edit3->Text.c_str(), Edit4->Text.c_str(), ComboBox1->Text.c_str())
не совпадают не только типы, но и количество параметров.


Если же ты только на форум выложил такой код, добавив в него ошибок, а у тебя он компилируется, то ошибка в SaveData возникает, т.к. вектор _ID пустой, а ты пытаешься обратиться к какому-то элементу.


Цитата Сообщение от lavalik Посмотреть сообщение
Код библиотеки
С чего ты взял, что это библиотека?
0
0 / 0 / 0
Регистрация: 23.05.2019
Сообщений: 28
11.06.2019, 11:53  [ТС]
Это библиотека, потому что я ее создал и подключил, а как сделать вектор _ID не пустым? Потому что указывает ошибка на эту строчку
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33376 / 21500 / 8236
Регистрация: 22.10.2011
Сообщений: 36,896
Записей в блоге: 11
11.06.2019, 11:59
lavalik, опять этот код... Смотри: в AddNewElement вызывается SaveData, которая пытается что-то считать из вектора. Но вектор НЕ заполнен еще. Что вообще должна делать SaveData, в смысле, зачем она тебе тут? И почему нельзя проверить, что i не больше, чем vector.size() перед тем, как к чему-то обращаться, если уж так понадобилось?
0
11.06.2019, 12:18

Не по теме:

Цитата Сообщение от lavalik Посмотреть сообщение
Это библиотека, потому что я ее создал и подключил
Ну да, с таким аргументом не поспоришь )

0
0 / 0 / 0
Регистрация: 23.05.2019
Сообщений: 28
11.06.2019, 13:53  [ТС]
save data сохраняет данные в некий файл Text.c
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33376 / 21500 / 8236
Регистрация: 22.10.2011
Сообщений: 36,896
Записей в блоге: 11
11.06.2019, 14:50
Цитата Сообщение от lavalik Посмотреть сообщение
save data сохраняет данные
Я вижу, как оно у тебя сохраняет. В первом посте написано. Насчет проверки существует ли элемент вектора с заданным индексом - еще раз вопрос повторить, или ты потом как-нибудь перечитаешь предыдущий мой пост и решишь ответить?
0
0 / 0 / 0
Регистрация: 23.05.2019
Сообщений: 28
11.06.2019, 22:34  [ТС]
Я немного разобрался и сделал так:
C++
1
2
3
4
5
6
7
8
9
10
11
    void Lechebnica::AddNewElement(bool readFromFile, int index, int id, string name, string familia, string nomer, string yslyga)
    {
        _ID.insert(_ID.begin() + index,id);
        _Name.insert(_Name.begin() + index,name);
        _Familia.insert(_Familia.begin() + index,familia);
        _Nomer.insert(_Nomer.begin() + index,nomer);
        _Yslyga.insert(_Yslyga.begin() + index,yslyga);
        if(readFromFile) SaveData(getCount()-1,3);
        else SaveData(getCount()-1,0);
        
    }

Так же поменял в самом юните, там ошибки со значениями теперь выдаёт, что не правильно задал
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::Button2Click(TObject *Sender)   //Добавить
{
     _vl.AddNewElement
(false, es_getCount(),
StrToInt(Edit1->Text),
Edit2->Text.c_str(),
Edit3->Text.c_str(),
Edit4->Text.c_str(),
ComboBox1->Text.c_str()
);
     ListBox1->Items->Clear();
     for(int i=0;i<_vl.getCount();i++)
     ListBox1->Items->Add(_vl.GetShortInfo(i).c_str());
     ShowMessage("Добавлен новый клиент!");
}
Добавлено через 5 часов 32 минуты
Только я чуть с ошибкой отправил

(false, _vl.getCount(),
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.06.2019, 22:34
Помогаю со студенческими работами здесь

raised exception class eaccessviolation with message.
текст самой проги//--------------------------------------------------------------------------- #include &lt;vcl.h&gt; #pragma hdrstop ...

Ошибка project Priject1.exe raised exception class $C0000005 with message
Здравствуйте. Сегодня поставил Rad Studio 10.1 Berlin. Создал проект,набросал несколько кнопок,при первом запуске всё отлично...

Project raised exception class EDivByZero with message 'Division by zero'
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt; #pragma hdrstop #include...

Project Projectl.exe raised exception class EOleException with message
в ADOQuery1 в сюкле пишу select Home.ID, FirstName, General from Home, Experience where Home.ID=Experience.ID; (в аксесе эти таблицы...

Ошибка: Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address
Работаю с файлом *.xls через OpenOffice Calc. На форме 2 элемента RadioButton1 и RadioButton2. Если выбрать RadioButton1 дважды, то все...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 31.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 30.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru