Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ошибка обращения к памяти 
:(
    Опции темы
kosta
Дата 25.5.2006, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 19.3.2005

Репутация: нет
Всего: нет



подскажи плз, чот я не  пойму почему так происходит :

есть у меня класс, который я описал в отдельном файлике, и так как мне нужно чтобы объект этого класса был виден везде я в этом же заголовочном сделал указатель на объект, выглядит ето так

Код

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

#ifndef CanalDescH
#define CanalDescH

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

class TCanal
{
private:
    int Length; //OX
    int Height; //OY
    int Width;  //OZ
    double Lambda; // heat conductivity
public:
    TCanal(int,int,int);
    TCanal(int,int,int,double);
    void Draw();
    int GetLength();
    int GetHeight();
    int GetWidth();
    double GetLambda();

    __property int length = {read = GetLength};
    __property int height = {read = GetHeight};
    __property int width = {read = GetWidth};
    __property double lambda = {read = GetLambda};

};

TCanal *Canal;

#endif


так вот када я обращаюсь к методу   GetLength(); то при выполнении return Length;выдает ошибку Access violation  at adress 00403822 in module "Name.exe". Read of adress 00000000

плюс ко всему выдает ворнинги что символ Canal определен во всех обжектовских файлах приложения.

Вот тут у меня инициализируется сам обект
Код

void __fastcall TfrmSCMain::btnCreateCanalClick(TObject *Sender)
{
int l=StrToInt(edtLength->Text);
int h=StrToInt(edtHeight->Text);
int w=StrToInt(edtWidth->Text);
Canal = new TCanal (l,h,w);
frmSC3D->Enabled=True;
Canal->Draw();



и вот в функции Draw и случаеца ета лабуда при вызове ГетЛенгс

Добавлено @ 15:05 
еще пробовал троссировкой выловить ошибку, получилось что в вотчах показывается содержимое класса Канал, а когда переходит к ГетЛенгс, то там переменная Ленгс в вотчах отображается как ???? а Канал.Ленгс - как нормальное число 
PM MAIL   Вверх
kosta
Дата 25.5.2006, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 19.3.2005

Репутация: нет
Всего: нет



Скорее всего он указатели клепает везде гле бзаю заголовочный файл с его описанием. Может подскажете как мне сделать Объект некоторого класса, чтобы он был виден везде а инициализация происходила при нажатии некоторой кнопки. Опишити плз в общем случае как вы делаете или покажите пример 
PM MAIL   Вверх
likehood
Дата 25.5.2006, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 21.12.2005

Репутация: 1
Всего: 24



объяви указатель на объект так:
Код

extern TCanal *Canal;
 
PM MAIL   Вверх
kosta
Дата 25.5.2006, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 19.3.2005

Репутация: нет
Всего: нет



пробовал, но пишет что неразрешенная внешняя ссылка =( 
PM MAIL   Вверх
likehood
Дата 25.5.2006, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 21.12.2005

Репутация: 1
Всего: 24



Цитата(kosta @  25.5.2006,  18:19 Найти цитируемый пост)
пробовал, но пишет что неразрешенная внешняя ссылка =( 

поподробнее, где пишет? 
PM MAIL   Вверх
kosta
Дата 25.5.2006, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 19.3.2005

Репутация: нет
Всего: нет



там где и все ошибки, он прожект не компилит. вот ошибка 
[Linker Error] Unresolved external '_Canal' referenced from D:\ХОЛОД\SC\BCB\SCMAIN.OBJ
 
PM MAIL   Вверх
likehood
Дата 25.5.2006, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 21.12.2005

Репутация: 1
Всего: 24



Ах, ну да, совсем забыл. В том файле, где создается Canal, нужно обявить TCanal *Canal; (без extern'а) 
PM MAIL   Вверх
kosta
Дата 25.5.2006, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 19.3.2005

Репутация: нет
Всего: нет



АЛИЛУЯ!!!! smile  огроменное спасиба 
PM MAIL   Вверх
likehood
Дата 25.5.2006, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 21.12.2005

Репутация: 1
Всего: 24



всегда пжалста! 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0560 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.