Форум: "Основная";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];
Внизвопрос по классам Найти похожие ветки
← →
Антоныч (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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.029 c