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

Не корректная работа класса. Access violation.

19.01.2012, 14:13. Показов 1592. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <stdio>
#include <string>
#include <sysmac.h>
 
#include "Unit1.h"
#include "Unit2.h"
 
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 
}
//---------------------------------------------------------------------------
  class Air
   {
    private:
      bool _pass;
      int _val;
      String _shipment, _arrival;
    public:
     void SetVal(int val )
     {
        _val = val;
     }
     int GetVal()
       {
       return _val;
       };
     void SetShipment (String shipment)
       {
         _shipment = shipment;
       };
     String GetShipment()
       {
         return _shipment;
         };
     void SetArrival (String arrival)
        {
          _arrival = arrival;
        };
     String GetArrival()
        {
          return  _arrival;
        };
     void SetPass( bool pass)
       {
         _pass = pass;
       };
     bool GetPass()
        {
          return _pass;
        };
       };
 
 
    
 
      Air *air;
  
//----------------------------------------------------------------------------
 
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Air * air = (Air *) new Air;
 
     try
     {
   if(RadioButton1->Checked)
    {
   air->SetShipment(Edit1->Text);
   air->SetArrival(Edit2->Text);
 
     Edit1->Clear();
     Edit2->Clear();
     Edit3->Clear();
     Edit4->Clear();
 
     if (RadioButton2->Checked)
     {
       air->SetShipment(Edit1->Text);
       air->SetArrival(Edit2->Text);
       air->SetVal(StrToInt(Edit3->Text));
     Edit1->Clear();
     Edit2->Clear();
     Edit3->Clear();
     Edit5->Clear();
     Edit6->Clear();
      }
      }
    else
      {
          ShowMessage("Заполните все поля");
      }
  }
  catch(...)
  {
  ShowMessage("");
  }
 
 
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::RadioButton1Click(TObject *Sender)
{
  Edit4->Visible = true;
  Label4->Visible = true;
  Edit5->Visible = false;
  Label5->Visible = false;
  Edit6->Visible = false;
  Label6->Visible = false;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::RadioButton2Click(TObject *Sender)
{
  Edit4->Visible = false;
  Label4->Visible = false;
  Edit5->Visible = true;
  Label5->Visible = true;
  Edit6->Visible = true;
  Label6->Visible = true;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form2->Show();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
 
  Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
  Edit7->Text = air->GetShipment();
}
Если я создаю экземпляр класса так "Air air;" то все работает, а если как написано выше при нажатии Button1 всё нормально, а при при нажатии Button4 выходит сообщение об ошибке "Project Projectl .exe raised exception class EAccessViolation with message 'Access violation at address 00402DD3 in module 'Projectl .exe'. Read of address 00000008'. Process stopped. Use Step or Run to continue."
скажите пожалуста где я ошибся?!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.01.2012, 14:13
Ответы с готовыми решениями:

Access violation и переменная класса
Описание класса: interface type TUser=class public Error: boolean; ...

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

Ошибка Access Violation при попытке создать объект класса. В чем может быть проблема?
Код класса unit Unit2; interface uses SysUtils; type ABCMatrix = class private

Ошибка доступа access violation: почему класс-наследник не видит protected данные-члены класса-родителя?
Подскажите есть базовый класс в разделе protected разместил переменную, которая по идее должна быть...

22
1 / 1 / 0
Регистрация: 18.04.2010
Сообщений: 45
20.01.2012, 19:16  [ТС] 21
Author24 — интернет-сервис помощи студентам
Спасибо буду в этом разбираться и пробовать. Если что напишу.

Добавлено через 2 минуты
Да мне нужна чистой воды динамика,просто пишу только по учебе отдельно в чем то разбираться пока времени нет. Поэтому некоторые даже простые вещи не могу сразу сообразить!

Добавлено через 12 минут
Всем кто помог спасибо, я во всем разобрался))) Сегодня допишу курсач. Если кому понадобится консультация в электронике ищите меня в скайпе под таким же ником!

Добавлено через 4 часа 2 минуты
опять у меня не все получается)))
C++
1
TPassengers * pas = new TPassengers[index]
переменная index изменилась как мне изменить размер массива. Что то у меня это с косяками выходит.
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
20.01.2012, 20:00 22
Цитата Сообщение от zuranika Посмотреть сообщение
переменная index изменилась как мне изменить размер массива. Что то у меня это с косяками выходит.
Есть разные пути реализации, но постоянные сдвиги в массиве из классов не самая удачная мысль, для большинства задач благоразумней задать максимум, но все это зависит от задачи. Объясните, как стоит задача и как вы ее хотите решить.
1
1 / 1 / 0
Регистрация: 18.04.2010
Сообщений: 45
20.01.2012, 20:08  [ТС] 23
Задача стоит в том что "Объекты классов динамические(выдержка из задания)" я бы хотел для начала задать минимальный размер и по мере внесения данных его увеличивать на 1. То есть при нажатии на кнопку массив увеличивается на 1 и заполняеттся. Нашел на форуме пару тем, но что то пока не могу сделать!
0
20.01.2012, 20:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.01.2012, 20:08
Помогаю со студенческими работами здесь

Virtual Dub, ошибка во время рендеринга: An out-of-bounds memory access (access violation)
Virtual Dub ошибка во время рендинга, осталось совесем чуть чуть и тут ошыбка. Но так не со всеми...

Не корректная работа программы
Здравствуйте ! Проблема заключается в меню &quot;Чтение базы данных&quot;. Приходится по 2 раза вводить свой...

Не корректная работа кода
Всем привет! Возникла проблема с данным кодом,не могу понять почему когда ставлю число меньше -5...

Не корректная работа виды 7
Выдает ошибку &quot;не правильно задан путь&quot; и т.п Не является приложением вин 32 &quot;На многие проги...


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

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru