Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 24.07.2011, 11:39   #1
GDA230105
Новичок
 
Регистрация: 23.02.2011
Сообщений: 1
Репутация: 10
По умолчанию роблема с созданием объекта динамического массива Класса

Пишу в С++Builder 6. При работе программы вылетает ошибка на строке BookS[kolvo] = Buf; //Внесение данных в динамический массив..
Ошибка следующего содержания: Project BookZ.exe raised exception class EAccessViolation with message 'Access violation at sddress 400068A4 in module 'rtl60.bpl'. Write of address 00000000'. Process stopped. Use Step or Run to continue.
Подскажите выход из ситуации- в чем ошибка и как исправить?

функция класса:
Код:

void Tlibrary_list::AddBook (const AnsiString way_to_the_book,const AnsiString way_to_the_cover,const AnsiString name,const AnsiString author,const AnsiString publishing_house,const int year_of_publication,const int pages,const AnsiString language)
{
TBookS Buf; //Временный объект хранения данных по книге
Buf.way_to_the_book=way_to_the_book; //Путь к книге
Buf.way_to_the_cover=way_to_the_cover; //Путь к обложке
Buf.name=name; //Название
Buf.author=author; //Автор
Buf.publishing_house=publishing_house; //Издательство
Buf.year_of_publication=year_of_publication; //Год издания
Buf.pages=pages; //Кол-во страниц
Buf.language=language; //Язык
BookS = (TBookS*)ReallocMemory(BookS, (kolvo+1)*sizeof(Buf)); // переопределение размера массива
BookS[kolvo] = Buf; //Внесение данных в динамический массив
kolvo=kolvo+1; // кол-во книг в списке
}

Описание класса TBookS
Код:

class TBookS //Библиотечный перечень
{
public: // User declarations
TBookS(void); //Конструктор информации о книге
//Первичные данные
AnsiString way_to_the_book; //Путь к книге
AnsiString way_to_the_cover; //Путь к обложке
//подробности о книге
AnsiString name; //Название
AnsiString author; //Автор
AnsiString publishing_house; //Издательство
int year_of_publication; //Год издания
int pages; //Кол-во страниц
AnsiString language; //Язык
};


Последний раз редактировалось Stilet; 26.07.2011 в 09:31.
GDA230105 вне форума   Ответить с цитированием
Старый 26.07.2011, 08:18   #2
Smitt&Wesson
Профессионал
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Адрес: г. Киров
Сообщений: 13,999
Репутация: 559

skype: forwardbiznes
По умолчанию

Эта ошибка возникает из-за того, что неверно организована инициализация класса.
Вы пытаетесь к элементам класса, обратиться как к элементам структуры.
Цитата:
Access violation at sddress 400068A4 in module 'rtl60.bpl'. Write of address 00000000'
Билдер Вам сообщает, что вы пытаетесь обратиться к адресу - 400068A4, а фактически обращаетесь к 00000000.
Ниже дан пример правильной инициализации класса.
Код:

TBookS Buf = new TBookS(); //Временный объект хранения данных по книге
Buf->way_to_the_book=way_to_the_book ; //Путь к книге
.........................
delete Buf;

__________________
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума   Ответить с цитированием
Старый 26.07.2011, 09:22   #3
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 10,871
Репутация: 1806

icq: 216409213
По умолчанию

Цитата:
Билдер Вам сообщает, что вы пытаетесь обратиться к адресу - 400068A4
Уж точно не так... Это место, где возникл эксепшн, адрес команды
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x на форуме   Ответить с цитированием
Старый 26.07.2011, 09:25   #4
Smitt&Wesson
Профессионал
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Адрес: г. Киров
Сообщений: 13,999
Репутация: 559

skype: forwardbiznes
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Уж точно не так... Это место, где возникл эксепшн, адрес команды
Да, да, точно. Теорию немного подзабыл.
Но метод устранения верен.
__________________
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при присвоении объекту производного класса объекта базового класса с исп. явного приведения типов Lanx Помощь студентам 0 06.04.2011 20:24
Проблемы с созданием объекта своего типа,С# roadzero Помощь студентам 4 04.04.2011 17:23
Проблема с созданием класса Arkuz Общие вопросы Delphi 10 18.04.2010 14:18
Если в классе объявить объект другого класса,будет ли видно переменные первого класса из объекта второго? TwiX Общие вопросы Delphi 3 15.11.2009 01:54
динамический родитель динамического объекта russianstrike Компоненты Delphi 6 03.10.2008 22:07


22:26.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru