![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание Класса [D5, WinXP]
Yus © (2004-11-10 20:13:00)Доброго всем вечера. Создаю класс MyClass который имеет массив Buf. Все компилируется, но при попытке записать в Buf значение выдает ошибку "Запись по адресу 000008". Подскажите, где ошибка
unit Unit1;
interface
uses
Windows,Unit2, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
myclass.Buf[1]:=1;
end;
end.
//---------------------------------------------------------------
unit Unit2;
interface
uses
Windows;
type
TMyClass = class(TObject)
private
{ Private declarations }
public
Buf:array[0..5]of integer;
{ Public declarations }
end;
var
MyClass: TMyClass;
implementation
end.
Yus (2004-11-11 06:05:00) [1]Все, понял. Благодарю!!
ЮЮ (2004-11-11 05:56:00) [2]Тебе же ответили: сначала надо создать экземпляр класса. Без создания экземпляра можно пользоваться только методами класса, но то в свою очередь не должен аользоваться полями. Поэтому в твоем случае надо:
if myclass = nil then myclass := TMyClass.Create;
myclass.Buf[1]:=1;
З.Ы. выносить поля (Buf) в public секцию, имхо, нехороший стиль -зта секция только для свойств и методов, а место полей - только в private
Yus (2004-11-11 05:36:00) [3]Никто не знает??
begin...end (2004-11-10 20:15:00) [4]Yus (10.11.04 20:13)
Может, объект вначале нужно создать?