Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Методы класса не может обратиться к полям данных


Автор: NeedForS 15.7.2009, 16:57
Объявляем класс
Код

Dimension = class
  KolPerem : Integer;
  procedure LoadGrid;
 //....
end;

procedure Dimension.LoadGrid;
begin
 KolPerem := 0;//Вот здесь возникает ошибка
//.....
end;


Обращаемся к методам класса
Код

procedure TForm1.BitBtn9Click(Sender: TObject);
Var Dim : Dimension;
begin
 Dim.LoadGrid;
//...
end;


Ошибка возникает во время выполнения. Как только задается значение к полю данных класса возникает ошибка, динамические массивы так же реагируют при вызове метода SetLength.

Выводимая ошибка:
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00461863 in module 'Project1.exe'. Write of address 0042A820'. Process stopped. Use Step or Run to continue.

Пробовал обращаться через Self
Код

Self.KolPerem := 0;

Или объявлять через Public
Код

Dimension = class
 Public 
 KolPerem : Integer;
  procedure LoadGrid;
 //....
end;


Ошибка сохраняется. Любые переменных, объявленные в классе при выполнение выдают ошибку. Я просто не понимаю, с чем это связано. Если объявить переменную как глобальную, то ошибки не возникает, но мне то нужно чтобы она была полем данных в методе, а не глобальной переменной.
Код

Dimension = class
  procedure LoadGrid;
 //....
end;
Var KolPerem : Integer;


Мне почему-то кажется, что я что-то очень простое и важно упускаю. Но просто ума не приложу что это может быть.

Автор: bems 15.7.2009, 17:40
Объект не создан. Вызывай конструктор

Автор: kami 15.7.2009, 17:40
А кто будет вызывать конструктор класса?
т.е.
Код

dim:=Dimension.create

Автор: CodeMonkey 15.7.2009, 18:41
Цитата(NeedForS @  15.7.2009,  16:57 Найти цитируемый пост)
Мне почему-то кажется, что я что-то очень простое и важно упускаю

Значит, вы ещё не совсем потеряны для сил Света. А то у некоторых даже не чешется smile

Автор: NeedForS 15.7.2009, 19:41
Всем огромное спасибо. Тяжко переходить на новый язык.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)