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

Проблема с созданием объекта динамического массива Класса

23.07.2011, 23:31. Показов 1923. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу в С++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.
Подскажите выход из ситуации- в чем ошибка и как исправить?

функция класса:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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)); // переопределение размера массива
[COLOR="red"]BookS[kolvo] = Buf; //Внесение данных в динамический массив[/COLOR]
kolvo=kolvo+1; // кол-во книг в списке
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.07.2011, 23:31
Ответы с готовыми решениями:

Проблема с созданием динамического массива (выдает ошибку)
Здравствуйте, задание такое: "Размер и данные в матрицу вводятся с клавиатуры. Элементы и результаты, разместить в памяти динамически....

Непонятная проблема с созданием объекта java.net.URL
Есть такой код: package Test; import java.net.*; public class Test { public static void main(String args) {

Проблема с созданием экземпляра класса
Добрый день! Есть файл "File.cpp", в нём находится точка входа и класс "Helper". Пытаюсь создать инстанс класса Helper: ...

7
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
24.07.2011, 00:20
А попробуй выделить память.
C++
1
TBookS Buf = new TBookS;
0
0 / 0 / 0
Регистрация: 23.07.2011
Сообщений: 4
24.07.2011, 00:30  [ТС]
А смысл выделять таким образом? я просто создаю сразу объект класса Buf - в нем данные хранятся превосходно, sizeof(Buf) выдает размер объекта... туту в чем то другом трабл
0
 Аватар для pomkalk
365 / 247 / 24
Регистрация: 03.04.2011
Сообщений: 558
Записей в блоге: 1
24.07.2011, 07:51
Скинь сюда описание класса TBookS, тогда ясно будет!!
0
 Аватар для iama
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
24.07.2011, 08:10
Вообще весь код выложи
0
0 / 0 / 0
Регистрация: 23.07.2011
Сообщений: 4
24.07.2011, 11:32  [ТС]
Код который использую:

Файл Classs.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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//---------------------------------------------------------------------------
 
#ifndef ClasssH
#define ClasssH
//---------------------------------------------------------------------------
#include <Classes.hpp>
 
//---------------------------------------------------------------------------
[COLOR="Red"][B]class TBookS[/B][/COLOR] //Библиотечный перечень
{
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; //Язык
};
//---------------------------------------------------------------------------
class Tlibrary_list //список книг
{
private: // User declarations
int kolvo; // кол-во книг в списке
public: // User declarations
TBookS *BookS; // динамический массив книг
int Count (void); // возвращает кол-во
void 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); // добавить книгу
void DelBook (const int Index); // Удалить книгу
 
Tlibrary_list(void); //Консутруктор списка книг
~Tlibrary_list(void); //Диструктор списка книг
};
//---------------------------------------------------------------------------
#endif
Файл Classs.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
#pragma hdrstop
 
#include "Classs.h"
 
 
//---------------------------------------------------------------------------
 
#pragma package(smart_init)
//---------------------------------------------------------------------------
TBookS::TBookS (void) // конструктор информации о книге
{
//Первичные данные
way_to_the_book=GetCurrentDir()+"\\"; //Путь к книге
way_to_the_cover=GetCurrentDir()+"\\"; //Путь к обложке
//подробности о книге
name="Книга"; //Название
author="Автор"; //Автор
publishing_house="Издательство"; //Издательство
year_of_publication=2011; //Год издания
pages=0; //Кол-во страниц
language="Русский"; //Язык
}
//---------------------------------------------------------------------------
Tlibrary_list::Tlibrary_list (void) //Консутруктор списка книг
{
kolvo = 0; // кол-во книг в списке
BookS= new TBookS[kolvo+1]; // объявление динамического массива книг
}
//---------------------------------------------------------------------------
Tlibrary_list::~Tlibrary_list (void) // диструктор списка книг
{
for(int i=0; i>=kolvo+1; i++)
{delete [] BookS;} // удаление динамического массива книг
kolvo = 0; // кол-во книг в списке
}
//---------------------------------------------------------------------------
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)); // переопределение размера массива
[COLOR="red"][B]BookS[kolvo] = Buf; //Внесение данных в динамический массив[/B][/COLOR]
kolvo=kolvo+1; // кол-во книг в списке
}
//---------------------------------------------------------------------------
void Tlibrary_list::DelBook (const int Index) //удаление книги
{
BookS[Index] = TBookS(); //Определение индекса книги в динамическом массиве
kolvo--; //кол-во книг
for(int i=Index; i<kolvo; i++) //цикл сдвига массива на удаленные данные книги
BookS[i]=BookS[i+1]; //сдвиг массива на удаленные данные книги
if (kolvo > 0)
BookS = (TBookS*)ReallocMemory(BookS, kolvo); // переопределение размера массива
}
//---------------------------------------------------------------------------
int Tlibrary_list::Count (void) // плучение колличества книг
{
return kolvo; //колличество книг
}
//---------------------------------------------------------------------------
Файл Unit1.cpp

//---------------------------------------------------------------------------

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Classs.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
Tlibrary_list library;
//---------------------------------------------------------------------------
void __fastcall TForm2::FormShow(TObject *Sender)
{
for(int i=1; i<=4; i++)
{
ShowMessage(library.Count());
library.AddBook("1","1","1","1","1",1,1,"1");
}}
//-------------------------------------------------------------------------
0
 Аватар для iama
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
24.07.2011, 11:59
Просто мрак. Читай Страуструпа.
0
0 / 0 / 0
Регистрация: 23.07.2011
Сообщений: 4
24.07.2011, 12:06  [ТС]
Цитата Сообщение от iama Посмотреть сообщение
Просто мрак. Читай Страуструпа.
Лучшеб дельное что посоветовал. А про читать- читаю....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.07.2011, 12:06
Помогаю со студенческими работами здесь

Ошибка с инициализацией и созданием динамического массива
ошибка с иницилиазцией и создание динамического массива, не знаю как исправить. Подскажите. #include &quot;pch.h&quot; ...

Обработчик событий у динамического объекта класса
Есть класс, динамически создающий PictureBox. class MyClass { public PictureBox pb; public MyClass() ...

Конструктор копирования для динамического объекта класса приемника
class first_class { public: first_class(int q) { m_q=q; cout&lt;&lt;&quot;First class say HI&quot;&lt;&lt;endl; } ...

Проблема с созданием массива из двух существующих
Здравствуйте. Нужно сформировать массив z из массивов y и x,чтобы нечетный элемент массива y складывался с четным элементом массива x и...

Проблема с созданием массива из двух существующих
1)Вот оригинальное задание(для первого кода): Сформировать новый массив из массивов y и x таким образом, что нечетный элемент массива y...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru