Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.07.2012, 18:10   #1
dimavit
Пользователь
 
Регистрация: 04.07.2010
Сообщений: 28
По умолчанию Access violation

При попытке инициализации созданного класса (см. код ниже) получаю сообщение: First chance exception at $00406F12. Exception class $C0000005 with message 'access violation at 0x00406f12: write of address '0x00000004'. Где ошибка?

Код:
type  
TMyClass = Class
//Поля
    FName1: String;
    FName2: Integer;
    FName3: Integer;
    FName4: Integer;
    FName5: Integer;
    FName6: Integer;
    FName7: Char;
    FName8: Integer;
    FName9: Integer;
    FName10: Integer;
//Методы для чтения и записи полей
    procedure SetName3(AIzm: Integer);
    procedure SetName8(AIzm: Integer);
    procedure SetName9(AIzm: Integer);
    procedure SetName10(AIzm: Integer)
//Конструкторы и деструкторы
    constructor Create(AName1: String; AName7: Char; AName9: Integer; AName10: Integer);
    destructor Destroy; override;
//Свойства
    property Name1: String read FName1;
    property Name2: Integer read FName2;
    property Name3: Integer read FName3 write SetName3;
    property Name4: Integer read FName4;
    property Name5: Integer read FName5;
    property Name6: Integer read FName6;
    property Name7: Char read Fname7;
    property Name8: Integer read FName8 write Setname8;
    property Name9: Integer read FName9 write SetNamt9;
    property Name10: Integer read FName10 write SetName10;
End;

var
obj: TMyClass;

implementation
{$R *.dfm}

constructor TMyClass.Create(AName1: String; AName7: Char; AName9: Integer; AName10: Integer);
    begin
    FName1:= AName1;
    FName2:= 10;
    FName3:= 20;
    FName4:= 15;
    FName5:= 25;
    FName6:= 10;
    FName7:= AName7;
    FName8:=1;
    FName9:= AName9;
    FName10:= AName10;
    end;

    destructor TMyClass.Destroy;
    begin
      FName3:=0;
    end;

    procedure TMyClass.SetName3(AIzm: Integer);
      begin
        FName3:= FName3 - AIzm;
        if FName3<0 then FName3:=0;
      end;

    procedure TMyClass.SetName8(AIzm: Integer);
      begin
        FName8:= FName8 + AIzm;
      end;

    procedure TBeing.SetName9(AIzm: Integer);
      begin
        Fname9:= FName9 + AIzm;
      end;

    procedure TMyClass.SetName10(AIzm: Integer);
      begin
        FName10:= FName10 + AIzm;
      end;

 begin
  obj.Create('One', 'M', 10, 20);
  ShowMessage('Hello');
end.
dimavit вне форума Ответить с цитированием
Старый 29.07.2012, 18:36   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Код:
obj.Create('One', 'M', 10, 20);
Тут. Объект не создан еще, obj = nil (условно говоря).
p51x на форуме Ответить с цитированием
Старый 29.07.2012, 18:57   #3
dimavit
Пользователь
 
Регистрация: 04.07.2010
Сообщений: 28
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Код:
obj.Create('One', 'M', 10, 20);
Тут. Объект не создан еще, obj = nil (условно говоря).
А как же его создать?
dimavit вне форума Ответить с цитированием
Старый 29.07.2012, 19:16   #4
dimavit
Пользователь
 
Регистрация: 04.07.2010
Сообщений: 28
По умолчанию

Sorry. Понял, очевидно надо так: obj:= MyClass.Create(....)
dimavit вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
access violation ho_N Компьютерное железо 2 30.11.2011 08:36
сlass и Access violation profor Общие вопросы C/C++ 2 05.04.2010 15:21
Access violation at address... Ralf_ru Помощь студентам 13 05.04.2009 05:20
Access Violation SunKnight Общие вопросы Delphi 2 05.06.2008 16:46
Access Violation Carbon Общие вопросы Delphi 12 18.09.2007 19:55