Главная страница
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.047 c
1-1096909779
Werwolf
2004-10-04 21:09
2004.10.17
вопрос по sin и cos


6-1091698339
Jolik
2004-08-05 13:32
2004.10.17
Как определить сколько данных я могу записать в сокет...


1-1096464141
Gemini
2004-09-29 17:22
2004.10.17
Поиск


3-1095835304
Pashkerton
2004-09-22 10:41
2004.10.17
Real time изменение записей!


8-1090061073
pesh
2004-07-17 14:44
2004.10.17
длительность MP3 файла