Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.17;
Скачать: CL | DM;

Вниз

вопрос по классам   Найти похожие ветки 

 
Антоныч   (2004-10-05 16:27) [0]

Кто хорошо шарит в ООП, посмотрите, плз, почему при нажатии Button1 выдает Access Violation? А то я только недавно начал вникать в ООП.

type
 TMyClass1=class (TObject)
   zn: integer;
   constructor Create;
   procedure Set_zn(const Value: integer);
   property G_zn: integer read zn write Set_zn;
   destructor Destroy;
 end;

type
   TMyClass2=class (TObject)
   Field1: TMyClass1;
   constructor Create;
   destructor Destroy;
 end;

var
 Form1: TForm1;
 MyClass2:TMyClass2;
implementation

{$R *.dfm}

{ TMyClass1 }

constructor TMyClass1.Create;
begin
Create;
end;

destructor TMyClass1.Destroy;
begin
destroy;
end;

procedure TMyClass1.Set_zn(const Value: integer);
begin
zn:=Value;
end;

{ TMyClass2 }

constructor TMyClass2.Create;
begin
Create;
end;

destructor TMyClass2.Destroy;
begin
destroy;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
MyClass2.Field1.G_zn:=5;
end;

end.


 
Amoeba ©   (2004-10-05 16:34) [1]

У ВСЕХ деструкторов в опиманиях классов нужно, во-первых, добавить "магическое слово" override.


 
Andy BitOff ©   (2004-10-05 16:36) [2]

Книги надо читать, там про все написано.
А "код" это выкини и никому не показывай.


 
Amoeba ©   (2004-10-05 16:36) [3]

И второе:

должно быть

constructor TMyClass1.Create;
begin
inherited;
end;

destructor TMyClass1.Destroy;
begin
inherited;
end;

А то у тебя получается в этих методах бесконечный вызов самих себя! Читай учебник по Delphi.


 
Антоныч   (2004-10-05 16:58) [4]

Изменил как посоветовали - все равно ругается :). Блин, пример-то наипростейший.


 
Суслик ©   (2004-10-05 17:10) [5]


> Изменил как посоветовали - все равно ругается :)

И что ты хочешь?
Чтобы не ругался? Тогда создай этот свой MyClass

MyClass2 := TMyClass2.create();


 
Basken   (2004-10-05 17:11) [6]

Неплохо было бы для начала создать экземпляр TMyClass1 ( Field1 Куда смотрит ?), а потом уже обращаться к методам и свойствам....


 
Amoeba ©   (2004-10-05 17:12) [7]

А для второго класса это сделал?

Далее:

procedure TForm1.Button1Click(Sender: TObject);
begin
MyClass2.Field1.G_zn:=5;
end


А экземпляр MyClass2 у тебя до этого был создан таким макаром?

MyClass2 := TMyClass2.Create;



Страницы: 1 вся ветка

Текущий архив: 2004.10.17;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.044 c
1-1096964908
Fishka
2004-10-05 12:28
2004.10.17
"Не показывать больше это окно"


3-1095725187
ДОнской
2004-09-21 04:06
2004.10.17
Операция недопустима в данном контексте - ado


14-1096192541
guest_Dmitry
2004-09-26 13:55
2004.10.17
Локальная политика безопасности в XP


14-1096288159
quickblack
2004-09-27 16:29
2004.10.17
Нужен Delphi 7 или6


1-1096661203
SMART_n
2004-10-02 00:06
2004.10.17
Delphi 8 и FillChar