Форум программистов, компьютерный форум, киберфорум
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. Показов 1973. Ответов 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
1709 / 905 / 207
Регистрация: 25.11.2009
Сообщений: 1,850
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
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
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
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
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 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru